编辑 这是我的文件阅读器,我可以从下到上阅读它,看看从下到上写它是多么困难.
BufferedReader mainChat = new BufferedReader(new FileReader("./messages/messages.txt"));
String str;
while ((str = mainChat.readLine()) != null)
{
System.out.println(str);
}
mainChat.close();
Run Code Online (Sandbox Code Playgroud)
或(旧问题)
如何让它将下一个String放在文件的开头,然后插入一个新行(将其他行向下移动)?
FileWriter chatBuffer = new FileWriter("./messages/messages.txt",true);
BufferedWriter mainChat = new BufferedWriter(chatBuffer);
mainChat.write(message);
mainChat.newLine();
mainChat.flush();
mainChat.close();
Run Code Online (Sandbox Code Playgroud)
有人可以纠正我,但我很确定在大多数操作系统中,没有选择,只能读取整个文件,然后再写回来.
我想主要原因是,在大多数现代操作系统中,光盘上的所有文件都始于边界的开头.问题是,您无法告诉文件分配表您的文件比该点更早开始.
因此,必须重写文件中的所有后续字节.我不知道任何操作系统例程只需一步即可完成.
因此,我会使用a BufferedReader将整个文件存储到一个Vector或中StringBuffer,然后首先使用前置字符串将其全部写回来.
-
一种为大型文件节省内存的方法,阅读@ Saury的randomaccessfile建议,将是:
file has N bytes to start with
we want to add on "hello world"
open the file for append
append 11 spaces
i=N
loop {
go back to byte i
read a byte
move to byte i+11
write that byte back
i--
} until i==0
then move to byte 0
write "hello world"
Run Code Online (Sandbox Code Playgroud)
瞧
| 归档时间: |
|
| 查看次数: |
1265 次 |
| 最近记录: |