IDEA写了几行java,想把一个二维数组放入txt中,数组大致如下:
结果最后打开txt,显示如下:
放上代码大家再看一下:
```java
Path path = Paths.get(fileName);
try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8)) {
for (int i = 0; i < 1875; i++) {
for (int j = 0; j < 1875; j++) {
writer.write(array[i][j]);
writer.write(" ");
}
// System.out.println("写入第"+i);
writer.newLine();
}
}
```
找到原因了 array[i][j] ,你的这个是个int值对吧,writer写入int的时候这个文件成了二进制的了,不是写入的字符了。
改成这样就正常了 writer.write(String.valueOf(array[i][j]));
贴一下相关代码
如果你在Java中使用了OutputStreamWriter将文本写入文件,可以在创建OutputStreamWriter对象时指定编码方式。例如,如果要将文本编码为UTF-8格式,可以使用以下代码:
OutputStream os = new FileOutputStream("path/to/your/file.txt");
OutputStreamWriter osw = new OutputStreamWriter(os, "UTF-8");
osw.write("your text");
osw.close();
若对你有所帮助,望采纳。
参考GPT和自己的思路,出现乱码的原因可能是因为你在将二维数组存储到文本文件中时,没有指定正确的字符编码格式。
在 Java 中,将数据存储到文本文件中需要使用输出流。在创建输出流时,需要指定正确的字符编码格式,否则数据在写入文件时可能会出现乱码。例如,如果要将数据以 UTF-8 编码格式写入到文本文件中,可以使用以下代码:
try (Writer writer = new OutputStreamWriter(new FileOutputStream("output.txt"), "UTF-8")) {
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
writer.write(array[i][j] + " ");
}
writer.write("\n");
}
} catch (IOException e) {
e.printStackTrace();
}
在这个例子中,我们使用 Writer 类将数据写入到文件中。在创建 Writer 对象时,使用了 OutputStreamWriter 类指定了字符编码格式为 UTF-8。在循环中,我们将数组中的每个元素以字符串形式写入文件中,并在每行末尾添加了一个换行符。
希望这可以帮助你解决问题。
您好,关于您提出的生成的txt文件里是这种乱码的情况:
首先:将txt文件复制到您电脑上的其它文件夹下,尝试用记事本或者nodepad++软件打开看是否正常
其次:文件顶部有一个文件超出大小的提示,您可以尝试写入文件时,减小数据量看看是否能显示正常,能则说明是数据量太大的问题
再次:可以使用nodepad++软件打开,然后选择编码,修改文件的编码为utf8看看是否正常,或者在程序中写入文件时设置"utf-8编码,以此确定是否是编码的问题。
换个文本软件打开, 比如 notepad++
该回答引用chatGPT部分内容和我
// 定义二维数组
int[][] array = new int[][] {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 将二维数组写入txt文件
try {
FileWriter fw = new FileWriter("array.txt");
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
fw.write(array[i][j] + " ");
}
fw.write("\n");
}
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
原因是写入时使用的字符编码和期望的不一致导致的。 java工作区统一编码。 统一为utf-8 这个就是输出流的编码问题吧? 如果你在输出时指定好具体的编码,或者说指定跟原网页一直的编码。 如果你期望写到文件中的汉字是 GBK编码,可以写文件时,将字符串准换成 GBK编码的byte[]。 网页编码和输出流编码一致
写入的代码默认编码方式与直接打开文本的编码方式不同,导致乱码。建议把代码放出来看看。
这是你的IDEA的编码问题,在这里设置一下就行: