欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Java输入输出流2.ppt

    • 资源ID:2284496       资源大小:246KB        全文页数:16页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java输入输出流2.ppt

    Java输入输出流2,伍淳华北京邮电大学计算机学院,Java,Java输入输出流,例:用不同的方案实现将一个Employee记录数组写入文件,并将其读回内存(JAVA Core P602)1)以文本格式保存相同类型(Employee)的数据;2)以二进制格式保存相同类型的数据;,Java,Java输入输出流,采用分隔格式存储Employee记录的一个数组;-每条记录使用单独的一行存储;-不同的成员变量间由分隔符分开;以”|”作为分隔符;Harry Hacker|355500|1989|10|1 Carl Cracker|75000|1987|12|15 Tony Tester|38000|1990|3|15,Java,Java输入输出流,写入记录-采用PrintWriter类;-成员变量之间用”|”分隔,一个记录占一行;-Employee类中增加一个方法:WriteData;public void writeData(PrintWriter out)throws IOException GregorianCalendar calendar=new GregorianCalendar();calendar.setTime(hireDay);out.println(name+|+salary+|+calendar.get(Calendar.YEAR)+|+(calendar.get(Calendar.MONTH)+1)+|+calendar.get(Calendar.DAY_OF_MONTH);,Java,Java输入输出流,读出记录-需要从一行中将各成员变量分离出来;-java.util.StringTokenizer 提供了很多实用的方法来分隔带分隔符的字符串;eg:StringTokenizer tokenizer=new StringTokenizer(line,”|”);StringTokenizer tokenizer=new StringTokenizer(line,”|,.”);如果不指定分隔符集合,默认的就是”tnrf”;,Java,Java输入输出流,StringTokenizer(String str,String delim)StringTokeizer(String str)boolean hasMoreTokens()String nextToken()int countTokens()while(tokenizer.hasMoreTokens()String token=tokenizer.nextToken();/process token,Java,Java输入输出流,读出记录-为Employee类增加一个readData方法 public void readData(BufferedReader in)throws IOException String s=in.readLine();StringTokenizer t=new StringTokenizer(s,|);name=t.nextToken();salary=Double.parseDouble(t.nextToken();int y=Integer.parseInt(t.nextToken();int m=Integer.parseInt(t.nextToken();int d=Integer.parseInt(t.nextToken();GregorianCalendar calendar=new GregorianCalendar(y,m-1,d);hireDay=calendar.getTime();,Java,Java输入输出流,写入一个Employee数组-主类中增加一个写数组的静态方法 static void writeData(Employee employees,PrintWriter out)throws IOException/write number of employees out.println(employees.length);for(Employee e:employees)e.writeData(out);,Java,Java输入输出流,读出一个Employee数组-主类中增加一个读数组的静态方法 static Employee readData(BufferedReader in)throws IOException/retrieve the array size int n=Integer.parseInt(in.readLine();Employee employees=new Employeen;for(int i=0;i n;i+)employeesi=new Employee();employeesi.readData(in);return employees;,Java,Java输入输出流,采用二进制的方式存储Employee数组;-当存储大量Employee对象时,采用文本方式保存每个对象的长度不等,因此很难实现随机存取;-采用二进制存储方式让每条记录具有相同的长度;-可以通过RandomAccessFile实现随机存取;-简单数据类型通过DataOutput接口的相关方法可以实现定长写入文件;-String类型的数据长度不定,需提供方法将字符串以固定长度写入文件;-自定类DataIO实现定长字符串的输入与输出;,Java,Java输入输出流,实现字符串定长写入-方法以参数size指定字符串写入的长度,如果不够,以0补充;public static void writeFixedString(String s,int size,DataOutput out)throws IOException for(int i=0;i size;i+)char ch=0;if(i s.length()ch=s.charAt(i);out.writeChar(ch);,Java,Java输入输出流,实现定长字符串输入-方法从输入流中读取字符,直到读取了size个字符或者遇到一个0值的字符为止,并跳过输入域中其他的0值;public static String readFixedString(int size,DataInput in)throws IOException StringBuilder b=new StringBuilder(size);int i=0;boolean more=true;while(more,Java,Java输入输出流,写入定长的记录public void writeData(DataOutput out)throws IOException DataIO.writeFixedString(name,NAME_SIZE,out);out.writeDouble(salary);GregorianCalendar calendar=new GregorianCalendar();calendar.setTime(hireDay);out.writeInt(calendar.get(Calendar.YEAR);out.writeInt(calendar.get(Calendar.MONTH)+1);out.writeInt(calendar.get(Calendar.DAY_OF_MONTH);,Java,Java输入输出流,读出定长的记录public void readData(DataInput in)throws IOException name=DataIO.readFixedString(NAME_SIZE,in);salary=in.readDouble();int y=in.readInt();int m=in.readInt();int d=in.readInt();GregorianCalendar calendar=new GregorianCalendar(y,m-1,d);hireDay=calendar.getTime();,Java,Java输入输出流,设定每个Employee记录的长度为100字节;-年、月、日三整型:12字节;-salary,double类型:8字节;-name:80字节;随机存取-把文件指针定位到第3条记录 long n=3;int RECORD_SIZE=100;in.seek(n-1)*RECORD_SIZE);-读取一条记录 Employee e=new Employee();e.readData(in);-修改记录并存回相同的位置 in.seek(n-1)*RECORD_SIZE);e.writeData(out);,Java,Java输入输出流,设定每个Employee记录的长度为100字节;-年、月、日三整型:12字节;-salary,double类型:8字节;-name:80字节;随机存取-把文件指针定位到第3条记录 long n=3;int RECORD_SIZE=100;in.seek(n-1)*RECORD_SIZE);-读取一条记录 Employee e=new Employee();e.readData(in);-修改记录并存回相同的位置 in.seek(n-1)*RECORD_SIZE);e.writeData(out);,

    注意事项

    本文(Java输入输出流2.ppt)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开