博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出...
阅读量:7228 次
发布时间:2019-06-29

本文共 2288 字,大约阅读时间需要 7 分钟。

三组数据如下:

{19.99 , 9.99 , 15.99 , 3.99 , 4.99}

{12 , 8 , 13 ,29 ,50}

{"Java T-shirt" , "Java Mug" , "Duke Juggling Dolls" , "Java Pin" , "Java Key Chain"}

主要考查难点就是题目限制了只能用这两个类.

由于数据是三个不同类型的数组,而DataInputStream的读取方法都一次只能读取一个,像这种数组就得另想办法.

1 import java.io.DataInputStream; 2 import java.io.DataOutputStream; 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 /*将如下三组不同类型的数据利用DataInputStream和DataOutputStream写入文件,然后从文件中读出*/ 8 public class Test3_2 { 9 public static void main(String[] args) throws IOException{10     File f= new File("d:\\test.txt");11     FileOutputStream fos=new FileOutputStream(f);12     DataOutputStream dos=new DataOutputStream(fos);13     FileInputStream fis=new FileInputStream(f);14     DataInputStream dis=new DataInputStream(fis);15     double[] d={19.99,9.99,15.99,3.99,4.99};16     int[] in={12,8,13,29,50};17     String[] s={"Java T-shirt","Java Mug","Duke Juggling Dolls","Java Pin","Java Key Chain"};18     19     double d1[]=new double[5];20     int i1[]=new int[5];21     String s1[]=new String[5];//用于显示到控制台时控制输出22     23     for(int i=0;i<5;i++){24         dos.writeDouble(d[i]);25         dos.writeInt(in[i]);26         dos.writeUTF(s[i]);27     }//写入到文件28     fos.close();29     dos.close();//关闭流30     for(int i=0;i<5;i++){31         d1[i]=dis.readDouble();32         i1[i]=dis.readInt();33         s1[i]=dis.readUTF();34     }//从文件中读取,因为DataInputStream只有这种方法,依次只能读一个,所以依次存放到数组中35     for(int i=0;i<5;i++)36         System.out.print(d1[i]+" ");37     System.out.println();38     for(int i=0;i<5;i++)39         System.out.print(i1[i]+" ");40     System.out.println();41     for(int i=0;i<5;i++)42         System.out.print(s1[i]+"     ");43     System.out.println();//控制输出格式44     45 }46 }

可能是文件写入那一部分让我形成了惯性思维.因为它是以数组依次循环读入,所以我希望最好可以以数组的形式依次循环读出.

而如上所述,在题目所限制的类中没有这种方法.

既然只有一次只能读一个的方法,所以我想它每读取一个,我就把它放到数组中再print出来.

另外,字符串数组的读取,遇到了麻烦,我百度了一个方法,如下:

1 char c;2             while((c=inDat.readChar())!='\0'){3                 System.out.print("读出成功");4             }

一度想把char强制转换为String????终究发现行不通

那用readUTF()方法,但是莫名其妙的有问题,我也不知道问题在哪儿,直到我看到DataOutputStream类的writeUTF方法,突然想到或许可以与其配对使用,而之前智障的我读取字符串时使用的是writeChars方法,从而导致读写时对文件的编码不一致.运行时总是乱码

 

转载于:https://www.cnblogs.com/silenTJ/p/8012352.html

你可能感兴趣的文章
memcached与PostgreSQL缓存命中机制
查看>>
百度地图路线检索(3)
查看>>
linux netstat 命令详解
查看>>
对前几篇blog的环境等的补充说明
查看>>
Curl命令使用解析大全
查看>>
MySQL日期函数
查看>>
【00】Effective Java
查看>>
.NET重构—单元测试重构
查看>>
SMB简介sabma服务(一)
查看>>
ANT简明教程
查看>>
Eclipse Luna WTP 与 Tomcat 8 的整合存在一个很头疼的 Bug
查看>>
小数在计算机里面的存放
查看>>
数据结构中的各种树简单解释
查看>>
我的朗科运维第七课
查看>>
CentOS的进程管理二
查看>>
https客户端证书导入
查看>>
用 PreparedStatement 向 SqlServer 中一次性插入多条记录
查看>>
Slackware-2014-0903
查看>>
CentOS下安装JDK1.7
查看>>
LDAP DIT设计参考
查看>>