这是针对Java的我正在尝试编写一个使用PrintWriter写入文本文件的程序。我已经能够在文件末尾添加文本,但我需要能够在两个单词之间写入文本。
例如:前面的文本:狗鼠标文字后:狗猫鼠标
文本文件比较长,所以我不能只读取整个内容并从中编辑字符串。
对此,最好的方法是什么?
您可以使用RandomAccessFile类。
RandomAccessFile file = new RandomAccessFile("c:\data\file.txt", "rw");
注意构造函数的第二个输入参数:"rw"。这是您想要打开文件的模式。"rw"表示读/写模式。查看JavaDoc了解更多关于可以在.中打开RandomAccess文件的模式的详细信息
移动随机访问文件
要在RandomAccessFile中的特定位置读取或写入,必须首先将文件指针定位在要读取或写入的位置。这是使用seek()方法完成的。文件指针的当前位置可以通过调用getFilePointer()方法获得。
这里有一个简单的例子:
RandomAccessFile file = new RandomAccessFile("c:\data\file.txt", "rw");
file.seek(200);
long pointer = file.getFilePointer();
file.close();
从随机存取文件读取
从RandomAccessFile读取是使用其众多read()方法之一完成的。这里有一个简单的例子:
RandomAccessFile file = new RandomAccessFile("c:\data\file.txt", "rw");
int aByte = file.read();
file.close();
read()方法读取位于文件中RandomAccessFile实例中文件指针当前指向的位置的字节。
JavaDoc忘了提到一件事:read()方法增加文件指针,使其指向文件中刚刚读取的字节之后的下一个字节!这意味着您可以继续调用read(),而无需手动移动文件指针。
写入RandomAccess文件
对RandomAccessFile的写入可以使用一个多写()方法来完成。这里有一个简单的例子:
RandomAccessFile file = new RandomAccessFile("c:\data\file.txt", "rw");
file.write("Hello World".getBytes());
file.close();
就像read()方法一样,write()在被调用后推进文件指针。这样,您就不必不断地移动文件指针来将数据写入文件中的新位置。
关闭()
RandomAccessFile有一个close()方法,当您使用完RandomAccess File实例时,必须调用该方法。您可以在上面的示例中看到调用close()的示例。