java(文件)的tellg()和seekg(c ++)

时间:2015-10-22 05:42:54

标签: java file

我需要在java中更改文件的偏移量(用于读取) 在c ++中我们有tellg()和seekg来改变文件的偏移量 我能为java做些什么? 我尝试bufferedreader2 = bufferedreader1但是当我用readline()更改bufferedreader2的偏移量时,bufferedreader1的偏移量会改变!!

对不起,我的英语不是很好。

1 个答案:

答案 0 :(得分:1)

您不能使用InputStream / Reader,因为它们仅用于顺序访问。

旧样式将使用RandomAccessFile(Java 1 +)。

新的风格是使用SeekableByteChannel(Java 7 +)。

请注意,两者都是字节偏移,而不是字符偏移。

// Old style
File file = new File("foo/bar.txt");
RandomAccessFile f = RandomAccessFile(file, "r");
long pos = f.getFilePointer();
f.seek(pos);

// New style
Path path = Paths.get("foo/bar.txt");
SeekableByteChannel ch = Files.newByteChannel(path); // Defaults to read-only
long pos = ch.position();
ch.position(pos);