我正在尝试使用“RandomAccessFile”将字符串写入(并读取)到文件,但“fio.writeBytes(file1str)”会在字符串的末尾添加一些垃圾:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Enter the D of planets: ");
file1str = in.readLine();
fio = new RandomAccessFile(new File("file1"), "rw");
fio.writeBytes(file1str);
System.out.println("Your enter: ");
for (String retval: file1str.split(",")) {
System.out.println(retval);
}
fio.close();
System.out.println("Data saves to 'file1'!");
}
catch(FileNotFoundException e){
System.out.println("File not found");
}
catch(IOException e){
System.out.println("Error1");
}
}
....但是如果我们打开文件,我们最后会看到额外的10700:
抱歉我的英文不好
答案 0 :(得分:3)
使用mode =“rw”创建Toast
时,文档说“如果该文件尚不存在,则会尝试创建它”。
这意味着如果文件已经存在,那么就不会尝试创建它,删除它,截断它等等。
所以,正在发生的事情是,无论出于何种原因,你已经有一个“file1”,里面有9个字符,你的代码所做的是它只覆盖前4个字符。 (“5,10”部分。)
在写入之前尝试删除文件,一切都应该没问题。
或者,考虑一下选择RandomAccessFile
是个坏主意的可能性,而是尝试使用RandomAccessFile
,以正常人正常方式编写普通文本文件使用子>