将2d int Array写入文件JAVA

时间:2014-05-01 07:09:57

标签: java multidimensional-array

自从我创建并写入文件以来已经有一段时间了。我已经创建了该文件并且我已经写了但是我得到了一些奇怪的字符。应该在文件中的唯一数字是-1,0和1.

现在我得到了我需要的数字,但我需要它们在文本文件中显示为2d数组。

示例:

     -1 -1 -1 -1 -1
     -1 -1 -1 -1 -1
     -1 -1 -1 -1 -1

请帮忙

public void saveFile()
{
   String save = "Testing";
   JFileChooser fc = new JFileChooser();
   int returnVal = fc.showSaveDialog(null);


    if (returnVal == JFileChooser.APPROVE_OPTION) {
        try {
            FileWriter bw = new FileWriter(fc.getSelectedFile()+".txt");

            for(int row = 0; row < gameArray.length; row++)
           {
               for(int col =0; col < gameArray[row].length; col++)
               {
                  bw.write(String.valueOf(gameArray[row][col]));
               }
           }
            bw.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

3 个答案:

答案 0 :(得分:2)

我建议您使用BufferedWriter,因为它更容易。

  

将文本写入字符输出流,缓冲字符   提供单个字符,数组和   字符串。

此外,您无需附加.txt,AFAIK,因为JFileChooser将返回全名。

SSCCE:

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class WriteToFileExample {
    public static void main(String[] args) {
        try {

            String content = "This is the content to write into file";

            File file = new File("/users/mkyong/filename.txt");

            // if file doesnt exists, then create it
            if (!file.exists()) {
                file.createNewFile();
            }

            FileWriter fw = new FileWriter(file.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write(content,0,content.length());
            bw.close();

            System.out.println("Done");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}  

取自Mykong。

答案 1 :(得分:2)

来自write(int c)方法的documentation

  

写一个字符。要写入的字符包含在给定整数值的16个低位中; 16位高位被忽略。

换句话说,您正在从Unicode表中传递字符索引。

您可能需要的是

fw.write(String.valueOf(gameArray[row][col]));

首先将整数转换为String并写入其字符。

还要考虑使用PrintWriter包装您的作者,其中包含printprintln等方法(类似于System.out),这样您就可以使用

fw.print(gameArray[row][col]);

答案 2 :(得分:0)

使用整数参数检查documentationwrite会写入单个字符。我想你的gameArray有整数元素。

将元素转换为字符串,并注意在数字之间添加空格。像

这样的东西
fw.write(" " + gameArray[row][col]);

会奏效。