我是学生,只是遇到了一些问题。我想写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();
}
}
答案 0 :(得分:1)
如果我不得不猜测我说文件不存在。但是这个代码还有其他几个问题:
正如文件所述:
FileWriter用于编写字符流。要编写原始字节流,请考虑使用FileOutputStream。
因此,如果您想编写原始整数或矩阵所属的其他类型,FileWriter
不是选择的类。
write
继承自OutputStreamWriter
和doc州,
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]);
}