您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Java >> 关于DataInputStream类中基本数据读写流的问题

关于DataInputStream类中基本数据读写流的问题

来源:网络整理     时间:2016/6/21 1:53:14     关键词:

关于网友提出的“ 关于DataInputStream类中基本数据读写流的问题”问题疑问,本网通过在网上对“ 关于DataInputStream类中基本数据读写流的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 关于DataInputStream类中基本数据读写流的问题
描述:

java乱码win7DataInputStream

 DataOutputStream out = new DataOutputStream(new
   FileOutputStream("invoice1.txt"));
        //定义要保存的数据数组。
        double[] prices = { 19.99, 9.99, 15.99, 3.99, 4.99 };
        int[] units = { 12, 8, 13, 29, 50 };
        String[] descs = { "Java T-shirt", "Java Mug", 
         "Duke Juggling Dolls",
                  "Java Pin", "Java Key Chain" };
    //将prices,unites以及descs中的数据以Tab键为分割符保存在文件中。
for (int i = 0; i < prices.length; i ++) {
            out.writeDouble(prices[i]);
            out.writeChar('\t');
            out.writeInt(units[i]);
            out.writeChar('\t');
            out.writeUTF(descs[i]);
            out.writeChar('\t');
        }
        out.close();
以上是输出流的主要部分  将其写入文件中 
可是为什么之后我打开文件确实一堆乱码(win7记事本打开):
@3龊W
=          Java T-shirt  @#G?{        Java Mug  @/G?{     
   Duke Juggling Dolls  @云窥?        Java Pin  @趼廫(?     2   Java Key Chain 
搞不懂这个问题    小白求大神解答

解决方案1:

把int,double转换成字符串的形式输出吧
out.writeBytes(String.valueOf(prices[i]));
out.writeChar('\t');
out.writeBytes(String.valueOf(units[i]));
out.writeChar('\t');
out.writeBytes(descs[i]);
out.writeBytes("\r\n");

解决方案2:

DataOutputStream输出的是底层字节表示,不是人能轻易看得懂的字符串。。
想以字符串形式输出方法有很多,数据不多的话先用一个StringBuilder拼接好再输出就行了,见下面代码。

	public static void main(String[] args) throws IOException {
double[] prices = {19.99, 9.99, 15.99, 3.99, 4.99};
int[] units = {12, 8, 13, 29, 50};
String[] descs = { "Java T-shirt", "Java Mug", "Duke Juggling Dolls", 
"Java Pin", "Java Key Chain" };
StringBuilder sb = new StringBuilder();
for (int i = 0; i < prices.length; i++) {
sb.append(prices[i]);
sb.append('\t');
sb.append(units[i]);
sb.append('\t');
sb.append(descs[i]);
sb.append('\t');
}
String str = sb.toString();
BufferedWriter bw = new BufferedWriter(new FileWriter("invoice.txt"));
bw.write(str);
bw.close();
}

以上介绍了“ 关于DataInputStream类中基本数据读写流的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1848649.html

相关图片

相关文章