如何写在特定位置的内容在文件中
问题描述:
答
您不能将数据插入到文件中。您可以使用RandomAccessFile
覆盖特定位置的数据。但是插入需要更改后面的所有数据。对于你的情况下,尝试这样的事情,而不是:
File file = new File("abhishek.txt");
Scanner scanner = new Scanner(file).useDelimiter("\n");
String line = scanner.next();
String newLine = line.substring(0, 5) + "Abhishek" + line.substring(5);
FileWriter writer = new FileWriter(file);
writer.write(newLine);
writer.close();
答
一般而言,您需要读取旧文件,修改内存中的内容并将其重新写回。
这里有很多选择,关于你是一次读取文件还是一次读取一小段文件,无论是替换现有的文件等,但这通常是使用的模式。
答
你不能将数据插入文件...文件系统(一般)根本不支持这样的操作。通常情况下,您会打开一个文件进行读取,另一个文件进行写入,将文件的第一部分从一个流复制到另一个文件,写入额外部分,然后复制文件的第二部分。
如果您要替换原始文件,则需要将其删除并将新文件移到原位。
有时将整个文件一次读入内存可能会更简单 - 这取决于您想要做什么以及文件的大小。
答
你有三种选择:
- 垫的原始入口有足够的空间,RandomAccessFile中都可以使用(你不关心一些额外的尾随空格容易,但效用有限
- 使用。模板引擎(StringTemplate,Velocity等),如果你这样做了很多,可能工作太多,如果你这样做只是一次
- 编写你自己的简单模板引擎,将它读入内存做一个正则表达式替换并写入它不是特别有效,但如果你有非常简单和有限的使用,也许是最好的妥协即