将 2d int 数组写入文件 JAVA



自从我创建并写入文件以来已经有一段时间了。 我已经创建了文件并写入了它,但我得到了一些奇怪的字符。 文件中应包含的唯一数字是 -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();
        }
    }

}

来自write(int c)方法的文档

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

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

您可能需要的是

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

它将首先将您的整数转换为字符串并写入其字符。

还可以考虑用具有printprintln(类似于System.out(等方法的PrintWriter包装您的编写器,以便您可以使用

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

我建议你改用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。

检查文档,write使用整数参数写入单个字符。我猜你的gameArray有整数元素。

将元素转换为字符串,并注意在数字之间添加空格。类似的东西

fw.write(" " + gameArray[row][col]);

会工作。

相关内容

  • 没有找到相关文章

最新更新