2013-02-04 27 views
1

我是java的新手。我正在阅读一个使用BufferedReader的大文件。我怎样才能知道一行的偏移量,以便我可以将它存储在其他文件中以用于索引目的?使用BufferedReader了解文件的偏移量?

编辑: 这里是我的代码

path=FileSystems.getDefault().getPath(".",filename); 
br=Files.newBufferedReader(path_doc_title_index_path, Charset.defaultCharset()); 
int offset=0; //offset of first line.  
String strline=br.readline(); 
offset+=strline.length()+1; //offset of second line 
+2

偏移没有意义了'读者'因为那些读*字符*,而不是*字节*。您无法高效地寻找UTF-8文件中的字符。你可能不得不在较低的水平上工作并自己追踪线路。 FileChannel类有一个['position()'方法](http://docs.oracle.com/javase/6/docs/api/java/nio/channels/FileChannel.html#position()),它保持自动跟踪。或者你必须从'InputStream'中自己读取行,并跟踪读取的字节。 – millimoose

回答

0

如果你问哪一行,你在一个文件中读取,一个简单的行计数器会工作

BufferedReader br = new BufferedReader(new FileReader("C:\\testing.txt")); 

    int lineNum = 0; 
    while ((sCurrentLine = br.readLine()) != null) { 
    System.out.println(sCurrentLine); 
    lineNum++; 
    } 
+1

+1您也可以使用带有计数器的BufferedReader的LineNumberReader。 –

+0

我需要知道偏移量,以便我可以随意使用RandomAccessFile随机读取任何行,只需知道它是偏移量。 – TheCrazyProgrammer