ファイルサイズがメモリよりも大きいと仮定すると、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
は、ファイル内の何にも一致しません。多分私はエンコーディングを設定する必要がありますか?