【发布时间】:2016-09-01 08:29:27
【问题描述】:
这可能与我的previous question 有关(关于如何将“för”转换为“för”)
所以我有一个在我的代码中创建的文件。现在我通过以下代码创建它:
FileWriter fwOne = new FileWriter(wordIndexPath);
BufferedWriter wordIndex = new BufferedWriter(fwOne);
有几个
wordIndex.write(wordBuilder.toString()); //that's a StringBuilder
以
结束(在 while 循环之后)wordIndex.close();
现在问题是这个文件很大,我想(需要)在不浏览整个文件的情况下跳进去。 RandomAccessFile 的 seek(long pos) 方法让我可以做到这一点。
这是我的问题:我创建的文件中的字符似乎是用 UTF-8 编码的,我在寻找时唯一的信息是我想跳转到的字符位置.另一方面,seek(long pos) 以字节为单位跳跃,所以我没有找到正确的位置,因为 UTF-8 字符可能超过一个字节。
这是我的问题:我可以在编写文件时改用 ISO-8859-15 编写(其中字符是字节)吗?这样seek(long pos) 会让我处于正确的位置。或者我应该尝试使用RandomAccessFile 的替代方法(是否有可以跳转到字符位置的替代方法?)
【问题讨论】:
-
你可以使用 FileOutputStream 吗?
-
如果您读取的字节的值小于 128,则它是 UTF-8 字符中的第一个字节。 128-255 的字节值是序列的中间。您可以随机查找,然后找到值 0-127 的下一个字节。
-
您可以使用 FileOutputStream。 stackoverflow.com/questions/1001540/…
标签: java encoding utf-8 randomaccessfile iso-8859-15