雖然這個問題是前一段時間發佈的,我覺得這是好事,這裏把我的答案。 我認爲最好的方法是在這種情況下使用java.nio.channels
包中的FileChannel
。 但是,只有當你需要有一個良好的表現!您需要通過RandomAccessFile
獲得FileChannel
,像這樣:
java.nio.channels.FileChannel channel = new java.io.RandomAccessFile("/my/fyle/path", "rw").getChannel();
在此之後,你需要創建一個ByteBuffer
在那裏你會從FileChannel
讀取。
這看起來是這樣的:
java.nio.ByteBuffer inBuffer = java.nio.ByteBuffer.allocate(100);
int pos = 0;
int aux = 0;
StringBuilder sb = new StringBuilder();
while (pos != -1) {
aux = channel.read(inBuffer, pos);
pos = (aux != -1) ? pos + aux : -1;
b = inBuffer.array();
sb.delete(0, sb.length());
for (int i = 0; i < b.length; ++i) {
sb.append((char)b[i]);
}
//here you can do your stuff on sb
inBuffer = ByteBuffer.allocate(100);
}
希望我的回答可以幫助你!
您可以使用Java中的RandomAccessFile修改文件,而無需回寫整個文件。查看我發佈的以下詳細信息。 – sendon1982 2014-03-28 02:40:42