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