覆盖java中文件内的值

时间:2014-05-29 21:27:13

标签: java

我使用这个在文件中创建一个整数矩阵,我想在创建它之后覆盖一个值,这就是代码:

    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();
    }

    }
}

有什么建议吗? 感谢。

3 个答案:

答案 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)

查看随机访问文件。如果它不起作用,您可能必须重写整个文件。