我想知道如果我们假设文件大小大于内存,你如何在 Java 中操作大文本文件。我用谷歌搜索了那个主题,它表明大多数人都推荐java.nio
这样的任务。
不幸的是,我还没有找到任何关于如何操作文件的文档。例如读取每一行,修改它,写它。我尝试过这样的事情,但这不起作用:
FileChannel fileChannel = null;
try {
fileChannel = new RandomAccessFile(file, "rw").getChannel();
ByteBuffer buffer = ByteBuffer.allocate(256);
while (fileChannel.read(buffer) != -1) {
buffer.rewind();
buffer.flip();
String nextLine = buffer.asCharBuffer().toString();
if (replaceBackSlashes) {
nextLine = nextLine.replace("\\\\", "/");
}
if (!(removeEmptyLines && StringUtils.isEmpty(nextLine))) {
buffer.flip();
buffer.asCharBuffer().put(nextLine);
}
buffer.clear();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (fileChannel != null) {
try {
fileChannel.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
那么你的建议是什么?此外, Stringnextline
与我的文件中的任何内容都不匹配。也许我需要设置编码?