java程序输出数据写入txt文件。编译运行后,打开txt,发现全是乱码,请各位指点一下,谢谢!

import java.io.*;
public  class  DataOut{
       public static  void  main(String args[])throws IOException{
              FileOutputStream fout=new FileOutputStream("data011.txt");
              DataOutputStream out=new DataOutputStream(fout);
              String [ ] items={"面包","笔","被子","牙膏","毛巾"};
              int[] units={2,5,1,2,3};
              float[] prices={1.5f,2.8f,125f,7.2f,5.6f};
              for(int i=0;i<items.length;i++){
                     out.writeUTF(items[i]);
                     out.writeChar('\t');
                     out.writeFloat(prices[i]);
                     out.writeChar('\t');
                     out.writeInt(units[i]);
                     out.writeChar('\t');
             }
                  out.close();
                 fout.close();
       }

}

其实不是乱码,而是 DataOutputStream 的特性,它使用的是一个和平台无关的方式写入到文件中。也就是说里面不是纯文本形式的。即在每个数据前面会带点前缀的形式来标示后面数据的格式。例如:你写的是一个数字,可能前面就会有 0000 0001 这种来标示后面是一个数字,普通的字符串可能就是 0000 0002。

这只是举例,实际上怎么标示的我也不知道,但是这些标示的字符不管用什么编码去打开都是 '乱码' 因为本来也不是那种有效的字符,所以这个是正常的。

处理中文使用字符流

统一回复,谢谢各位的解答。问题已解决,这个问题为数据流(操作基本数据类型的流)——DataOutputSream/DataInputStream

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632