gpt4 book ai didi

java - 将一行替换为 RandomAccessFile

转载 作者:行者123 更新时间:2023-12-01 13:41:19 26 4
gpt4 key购买 nike

我有一个包含以下内容的文本文件:

Ehsan,12345,11111,1000
maryam,147258,222,5000
reza,758694,abcd,4600
Ali,564789,kfcg,7500
mohammad,658932,bnfgd,5800
zahra,758964,798564,6750
rasool,568974,457832,1400
Ahmad,785403,wasd,6900
Amir,3205809,man123,7000
Morad,1,1,8900

我用RandomAccessFile读取了它的所有行:

Account2[] members = new Account2[10];
try {
RandomAccessFile raf = new RandomAccessFile("d:\\myTxtFile.txt", "r");
raf.seek(0);
long position = raf.getFilePointer();
int counter = 0;
while(raf.length()> position){
members[counter] = new Account2(raf.readLine(), position);
position =raf.getFilePointer();
counter++;
}
} catch (Exception e) {
e.printStackTrace();
}

然后在 Account2 中,我有一种在更改后保存文件的方法:

private long position;
public Account2(String l, long p){
super(l);
position = p;
}
public void saveFile(){
try {
RandomAccessFile raf = new RandomAccessFile("d:\\myTxtFile.txt", "rw");
raf.seek(position);
String newContents = "my new contents here";
//raf.writeChars(newContents.toString());
raf.writeUTF(newContents);
} catch (Exception e) {
e.printStackTrace();
}

但它破坏了我的文本文件,并在行首添加了一些奇怪的字符,并将下一行带到行尾。这是为什么?

最佳答案

回答您的问题:raf.writeUTF(newContents);正在“破坏您的文件”并导致出现“奇怪的字符”。相反,你想使用 raf.writeBytes(newContents);

此外,我不知道这段代码应该完成什么,但考虑到你不能使用 RandomAcessFile在指定位置插入字符串。相反,您的 saveFile()方法用 "my new contents here" 覆盖每行的开头。如果旧字符串和新字符串的长度相同,这不是问题,但除此之外,这也会弄乱您的文件。为了防止用新内容重写您的文件。例如。 java replace specific string in textfile

关于java - 将一行替换为 RandomAccessFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20746467/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com