我使用这个在文件中创建一个整数矩阵,我想在创建它之后覆盖一个值,这就是代码:
import java.io.File;
import java.io.FileWriter;
public class main {
public static void main(String[] args) {
File file = new File("foo/file.txt");
FileWriter writer = null;
try {
file.createNewFile();
writer = new FileWriter(file);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
writer.write(String.valueOf(0) + " ");
}
writer.write("\n");
}
} catch (Exception e) {
e.printStackTrace();
}
try {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
if (i == 3)
writer.write(String.valueOf(1) + " ");
}
}
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
有什么建议吗? 感谢。
答案 0 :(得分:1)
遗憾的是,对于这种情况,无法在普通文件中替换一个值。在编写文件时,您需要进行某种形式的阅读。
在这种情况下,Java中的最佳实践是将内容存储在数据结构中。在这种情况下,您应该使用某种类型的矩阵,这只是一个数组数组
int[][] values = new int[x][y];
一旦通过读取文件创建了它,您只需要使用相同的代码将其写入文件。
如果内存成为问题,那么您可能需要使用临时文件来查看流读取和写入。
我希望有所帮助!
答案 1 :(得分:0)
是否有任何特定原因需要覆盖一个值而不是重写整个文件?在C ++中,您可以手动设置流中的写入位置,但它会覆盖后面的任何内容。
无论如何,看看这个问题和答案: how to write content in a Specific position in a File
答案 2 :(得分:-2)
查看随机访问文件。如果它不起作用,您可能必须重写整个文件。