Java 如何附加到随机访问文件?每次我运行这段代码时,数据都会被覆盖
如何使用此代码片段附加数据?每次运行代码时,数据总是被覆盖。Java 如何附加到随机访问文件?每次我运行这段代码时,数据都会被覆盖,java,Java,如何使用此代码片段附加数据?每次运行代码时,数据总是被覆盖。 try{ RandomAccessFile fileWriter = new RandomAccessFile("Officers.txt", "rw"); fileWriter.writeUTF(officerObject.getOfficerBadgeNum()); fileWriter.writeUTF(officerObject.getOfficerFirstName(
try{
RandomAccessFile fileWriter = new RandomAccessFile("Officers.txt", "rw");
fileWriter.writeUTF(officerObject.getOfficerBadgeNum());
fileWriter.writeUTF(officerObject.getOfficerFirstName());
fileWriter.writeUTF(officerObject.getOfficerLastName());
fileWriter.writeUTF(officerObject.getOfficerPrecint());
fileWriter.close();
System.out.println("Data Successfully Saved");
}
catch (IOException e) {
System.out.println("Error in File. Could not SAVE Officer");
e.printStackTrace();
}
添加skipBytes()以转到文件末尾,如下所示
尝试以下方法:
RandomAccessFile fileWriter = new RandomAccessFile("Officers.txt", "rw");
fileWriter.writeUTF(officerObject.getOfficerBadgeNum());
fileWriter.skipBytes( (int)fileWriter.length() );
fileWriter.writeUTF(officerObject.getOfficerFirstName());
.
.
在写入之前,将其添加到文件的末尾;第一个电话。我还想买一辆。像
RandomAccessFile的目的是访问文件中任意位置的数据。为了实现这一点,有一个内部指针确定下一个字节将写入的位置。该指针默认为0 因此,正如其他人所写,你首先要寻找文件的结尾;否则写操作将转到该文件的开头 但这里真正的要点是:根据您的需求,您可能不需要使用RandomAccessFile。一个简单的FileWriter将完成这项工作(当您只想附加到该文件时)。当然,当您的主要需求是“轻松”编写UTF8时,RandomAccessFile可能是您的首选
您可以看到,在创建普通FileWriter对象时,有一个布尔标志,用于确定FileWriter应该创建新文件还是附加到现有文件 我希望能对否决票发表评论,因为我实在看不出我的答案有什么问题。我同意,但如果他使用
FileWriter
,他就不能使用writeUTF()
FileWriter
几乎总是错误的选择,因为它总是使用默认编码。另外,请注意,writeUTF
并不是简单地将字符串写为UTF-8;它预先设定了字符串的长度;等效的操作是DataOutputStream.writeUTF
。谢谢。这些解释比未加注释的否决票更有意义。这可能会增强以后的答案。
try (RandomAccessFile fileWriter = new RandomAccessFile("Officers.txt", "rw")) {
fileWriter.seek(fileWriter.length());
fileWriter.writeUTF(officerObject.getOfficerBadgeNum());
fileWriter.writeUTF(officerObject.getOfficerFirstName());
fileWriter.writeUTF(officerObject.getOfficerLastName());
fileWriter.writeUTF(officerObject.getOfficerPrecint());
System.out.println("Data Successfully Saved");
} catch (IOException e) {
System.out.println("Error writing File. Could not SAVE Officer");
e.printStackTrace();
}