将数组写入txt Java

时间:2015-08-26 20:14:19

标签: java arrays file writing

我是学生,只是遇到了一些问题。我想写2d数组到.txt文件。你能检查一下问题出在哪里吗?

public void TextFileWritingExample1() {

    try {
        FileWriter writer = new FileWriter("MyFile.txt", true);
        for (int i = 0; i < prvky.length; i++) {
            for (int j = 0; j < prvky[0].length; j++) {
                writer.write(prvky[i][j]);
            }
        }
        writer.write("\r\n");   // write new line
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

3 个答案:

答案 0 :(得分:1)

如果我不得不猜测我说文件不存在。但是这个代码还有其他几个问题:
正如文件所述:

  

FileWriter用于编写字符流。要编写原始字节流,请考虑使用FileOutputStream。

因此,如果您想编写原始整数或矩阵所属的其他类型,FileWriter不是选择的类。

write继承自OutputStreamWriterdoc州,

  

public void write(int c)              抛出IOException
  写一个字符。

这意味着write只会写出int的最低有效位。因此,只要矩阵中的任何元素超出char的范围限制(16位),您就会松开该值的所有高位。输出不会是明文,但是由int的值表示的字符。因此,例如filewriter.write(23)不会导致将23作为文本写入文件,而是由23表示的字符,即&#34;#&#34;。

您可以将int保存为二进制或纯文本文件。选择取决于你。如果要将其写为明文,则必须先将数字转换为明文,然后引入一个字符来分隔单个整数。或者,如果您想将数据作为二进制文件写入文件,则必须先将数据转换为byte[]

下一个问题:除非您的矩阵具有固定大小,否则您还必须保存矩阵的大小,以便从文件中加载矩阵。

答案 1 :(得分:1)

我认为你想要的是数字出现在txt文件的2d网格中,所以如果那就是你想要的,这就是代码

public void TextFileWritingExample1() {

    try {
        FileWriter writer = new FileWriter("MyFile.txt", true);
        for (int i = 0; i < prvky.length; i++) {
            for (int j = 0; j < prvky[i].length; j++) {
                  writer.write(prvky[i][j]+" ";
            }
            //this is the code that you change, this will make a new line between each y value in the array
            writer.write("\n");   // write new line
        }
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}

答案 2 :(得分:0)

你可以尝试

 PrintWriter writer = new PrintWriter("MyFile.txt", "UTF-8");
    for (int i = 0; i < prvky.length; i++) {
        for (int j = 0; j < prvky[i].length; j++) {
            writer.println(prvky[i][j]);
        }