【发布时间】:2011-08-12 19:16:03
【问题描述】:
假设我有一个名为 abhishek.txt 的文件,其中包含以下行
我是,你叫什么名字。
现在我要写了
阿布舍克
在“我是”之后,就像我是阿布舍克一样,.. 如何直接在这个特定位置写内容。
【问题讨论】:
标签: java inputstream textinput fileinputstream
假设我有一个名为 abhishek.txt 的文件,其中包含以下行
我是,你叫什么名字。
现在我要写了
阿布舍克
在“我是”之后,就像我是阿布舍克一样,.. 如何直接在这个特定位置写内容。
【问题讨论】:
标签: java inputstream textinput fileinputstream
您不能将数据插入文件...文件系统(通常)根本不支持这样的操作。通常,您会打开一个文件进行读取,另一个文件进行写入,将文件的第一部分从一个流复制到另一个流,写入多余的部分,然后复制文件的第二部分。
如果您尝试替换原始文件,则需要将其删除并将新文件移动到位。
有时一次将整个文件读入内存可能更简单 - 这取决于您要执行的操作以及文件的大小。
【讨论】:
您不能将数据插入文件。您可以使用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();
【讨论】:
一般来说你需要读取旧文件,修改内存中的内容,然后再写回。
这里有很多选项,比如你是一次读取文件,还是一次读取一小段,是否替换现有文件等,但这通常是要使用的模式。
【讨论】:
你有三个选择:
【讨论】: