【发布时间】:2013-02-09 21:51:16
【问题描述】:
我想知道文本文件中每一行的偏移量。
目前我已经尝试过了,
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
通过这种方式,我可以遍历整个文件以了解整个文本文件中行首的偏移量。但是,如果我使用RandomAccessFile 来查找文件并使用上述方法计算的偏移量访问一行,那么我发现自己处于某行的中间。那就是好像offset不正确。
怎么了?这种方法计算偏移量是否不正确?请问有更好更快的方法吗?
【问题讨论】:
-
Charset.defaultCharset()也是文件使用的字符集吗?您使用的是 Windows 还是 Linux?不要添加1,而是尝试添加System.getProperty("line.separator").length()。 -
我正在使用 linux。不知道字符集请指导我。
-
在创建
BufferedReader时,您必须指定正在读取的文件的编码。你给了Charset.defaultCharset()。如果您的文件是UTF-8编码的,则需要指定Charset.forName("UTF-8")。System.getProperty("line.separator").length()在您的系统上的评估结果是什么? -
System.getProperty("line.separator").length()计算结果为 1。
标签: java text-files offset