自从我创建并写入文件以来已经有一段时间了。 我已经创建了文件并写入了它,但我得到了一些奇怪的字符。 文件中应包含的唯一数字是 -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]));
它将首先将您的整数转换为字符串并写入其字符。
还可以考虑用具有print
、println
(类似于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]);
会工作。