有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java缓冲编写器偶尔会创建符号而不是数字

所以我有一个程序,它收集了一堆数据,并连续地将数据连接成一个字符串,每个条目之间只有一个空格。在关闭例程中,我使用缓冲写入程序将字符串打印到txt文件中。大约50%的时间数据显示为(大部分)中国符号。虚拟机正在做一些奇怪的Unicode事情吗?为什么这只是偶尔发生

我在其他论坛上看过,没有看到这个问题的其他例子。我所认识的其他计算机科学专业的学生都不知道发生了什么

编辑:数据均为0-1365的整数

更新:进一步研究后,我发现this这让我觉得a可能需要打印流而不是缓冲写入程序,有人能说吗?我测试了PrintStream,但我不能像使用BufferedWriter那样使用FileWriter构建它,这意味着我需要更多的研究来写入我的txt

更新:打印到控制台不会发生此错误。我会接受一个答案,解释记事本(我用来打开txt的程序)有时显示数字,有时显示符号的方式

以下是相关代码:

 //fields
private static BufferedWriter out;
private File saveFile;
String data;
 //inside constructor 
this.saveFile = new File("C:\\Users\\HPlaptop\\Desktop\\MouseData.txt");
                this.saveFile.delete();
                try{this.saveFile.createNewFile();}
                catch (IOException e ){System.out.println("File creation error");}
try {out = new BufferedWriter(new FileWriter("C:\\Users\\HPlaptop\\Desktop\\MouseData.txt"));}
                catch (IOException e) {System.out.println("IO Error");}
                this.control.addWindowListener(new WindowAdapter()
                {
                 public void windowClosing(WindowEvent e)
                    { //there is a method call here but the basics are below
                        out.write(data);
                    out.close();
                        System.exit(0);
                    }
                });

以下是正确打印的示例数据集:

 1365 767 1365 767 1365 767 1364 767 1353 756 1268 692 1114 604 980 488 812 334 744 283 694 244 593 150 473 81 328 13 207 0 124 0 115 0 102 0 99 6 107 13 132 20 173 32 187 31 190 25 194 20 201 17 215 14 221 10 224 7 224 7 224 7 226 6 226 6 226 6 226 6 226 6 226 6 226 6

我想要的数据不是在几秒钟后采集的

㐀ㄹ㈠㤰㐠㔸㈠㈱㐠㠶㈠㐱㐠㘲㈠㘰㌠㠷ㄠ㔹㌠㌳ㄠ㌹㈠㘹㈠㄰㈠㠷㈠㜳㈠㐶㈠㐷㈠㐶㈠㔷㈠㌶㈠㔵㈠㐵㈠㠰㈠㤴ㄠ㔲㈠㤴㐠‶㐲‹㌱㈠㘴〠㈠㘴〠㈠㘴〠㈠㜴〠㈠㠴〠㈠㠴〠㈠㜴㠠㈠㔴ㄠ‶㐲‵㤱㈠㔴ㄠ‹㐲‵㠱㈠㜴ㄠ‶㐲‹ㄱ㈠〵ㄠ‰㔲‰〱

共 (2) 个答案

  1. # 1 楼答案

    由于您没有提供将哪些数据写入流的示例,您可能正在经历布什隐藏事实现象

  2. # 2 楼答案

    BufferedWriter没有发生错误,代码正确,除了 使用冗余

    this.saveFile.delete();
     try{this.saveFile.createNewFile();}
                    catch (IOException e ){System.out.println("File creation error");}
    

    new FileWriter
    

    打开文件时会发生读取数据的错误。由于软件读取数据的方式不同,根据打开数据的程序显示不同的结果。记事本显示符号,因为它将数字解释为ASCII。控制台没有试图解释数据,只是显示写入数据的内容。使用不试图解释文件中数字的程序将允许正确查看数据