




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、输入输出,案例1,教学目标,掌握Java中流的分类及其相关概念 理解java.io包中流类的构成 掌握File类 掌握FileInputStream/FileOutputStream类 掌握DataInputStream/DataOutputStream类,教学任务,编写一个程序实现对帐户数据的存储和浏览的功能(帐户数据包括帐户ID、帐户金额和交易日期)。,相关实践知识1,打开NetBeans IDE,相关实践知识2,新建Java应用程序JavaIOProject1,相关实践知识3,Java中输入输出的实现,起点是理解流、输入输出、文件和字节字符这些基本概念。 字节、字符 文件 输入、输出 流
2、,相关实践知识4,新建Java类 Account,相关实践知识5,在Account类中,导入需要的包,package com.handson; import java.io.EOFException; import java.io.IOException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.File; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOExc
3、eption; import java.util.Date; import java.util.ArrayList; import java.util.Iterator; import java.util.List;,相关实践知识6,在Accout类中定义变量,private long id; /帐户ID private double amount; /帐户金额 private Date date; /交易日期,相关实践知识7,输入get/set方法,/* 对象的文本描述 */ public String toString() return 帐户ID:+this.getId()+|帐户金额:+
4、this.getAmount()+ |交易日期:+this.getDate()+; Id, amount, date,的get/set方法,相关实践知识8,定义Account类的构造方法,public Account() this(0L, 0.0, new Date(); public Account(long id, double amount, Date date) this.setId(id); this.setAmount(amount); this.setDate(date); ,相关实践知识9,定义数据读写方法,/* 写出数据 */ public void write(DataOu
5、tputStream out) throws IOException out.writeLong(this.getId(); out.writeDouble(this.getAmount(); out.writeLong(this.getDate().getTime(); return; /* 读入数据 */ public Account read(DataInputStream in) throws IOException this.setId(in.readLong(); this.setAmount(in.readDouble(); this.setDate(new Date(in.re
6、adLong(); return this; ,相关实践知识10,定义方法从文件中读取帐户信息,public static List readAccount(File file) FileInputStream in = null; DataInputStream dataIn = null; List result = new ArrayList(); try in = new FileInputStream(file); catch (IOException e) System.out.println(指定的文件不存在!); return result; dataIn = new Data
7、InputStream(in); . return result; ,相关实践知识11,定义方法将账户信息写入文件,public static boolean writeAccount(List accounts, File file) boolean flag = true; FileOutputStream out = null; DataOutputStream dataOut = null; try try out = new FileOutputStream(file); dataOut = new DataOutputStream(out); Iterator ite = acco
8、unts.iterator(); . return flag; ,相关实践知识12,编写main函数,测试,总结,java.io包的流类可以从字节/字符,输入/输出和基础流/过滤流三个角度来考察。 File类表示文件及其相关的一组操作。 字节流多继承自InputStream/OutputStream,常用的有FileInputStream和FileOutputStream。 DataInputStream/DataOutputStream提供了读写基本数据类型的方法。 编写Java I/O程序应处理IOExcpetion及其子类。,字节、字符,字节 一般是指8位二进制数所组成的数据单位,人类无
9、法直接通过阅读其字面值来理解它所表达的含义; 字符 是指人类能够直接阅读的符号,在Java中以16位的Unicode码表示。而计算机在存储数据的时候将所有的数据(包括字符)都以字节为单位进行存储。,文件,我们通常所谈的“文件“多是指磁盘存储系统上所存储的数据(文件)。,输入输出,输入输出(input/output)也称I/O。从任何能够发送字节的地方(数据源)可以取得“输入”对象;通过“输出”对象可以发送数据到任何能够接收字节的地方(输出的目的地)。,流,所谓流(stream),是指有序的数据序列,它有一个来源(输入流)或者目的地(输出流)。,java.io包,java.io包中定义了一系列的
10、接口、抽象类、具体类和异常来描述输入输出操作。这些类/接口将程序员与底层操作系统的具体实现细节隔离开来,同时允许通过文件或者其他方式去访问系统资源。,InputStream,java.io包的结构,OuputStream,Reader,Writer,文件-1,java.io包中使用类java.io.File来表示文件的概念。该类中封装了对用户机器的文件系统进行操作的功能。,文件-2,常用构造函数,文件-3,在java.io中的类都是将相对路径解释为起始于用户的当前工作目录 ,如果当前路径下该文件并不存在,则不会创建该文件 .,File file1 = new File(c:temp.txt);
11、 File file2 = new File(temp.txt); File file3 = new File(c:windows); File file4 = new File(c:windows, temp.txt); File file5 = new File(file3, temp.txt);,文件-4,常用字段,文件-5,为了让你的代码具有更好的可移植性,应尽量使用这些封装的常量而不是字符串字面值 ,如下面例子所示:,System.out.println(File.separatorChar); System.out.println(File.pathSeparatorChar);
12、System.out.println(System.getProperty(file.separator); System.out.println(System.getProperty(path.separator);,文件-6,常用方法,字节流-1,用于读取或者写入字节的流是字节流。 java.io包中的字节流分为字节输入流和字节输出流两类。 所有的字节输入流都直接或者间接地继承自InputStream,所有的字节输出流都直接或者间接地继承自OutputStream。,字节流-2,所有的字节流都支持打开和关闭的概念。 所有的字节流具有相同的同步策略和并发行为。 大多数对流的操作都会抛出IOE
13、xception或者它的子类。,OutputStream-1,java.io.OutputStream 此抽象类是表示字节输出流的所有类的超类。它提供了向某个目标写入字节的抽象方法,OutputStream-2,常用方法,DataOutputStream,java.io.DataOutputStream 继承自FilterOutputStrem,允许应用程序以适当方式将Java基本数据类型写入输出流中。 DataOutputStream提供了大量的write方法用以写入基本数据类型,例如:writeBoolean(boolean v),writeInt(int v)等等。,InputStrea
14、m-1,java.io.InputStream 此抽象类是表示字节输入流的所有类的超类。它声明了用以从特定资源读取字节的方法。,InputStream-2,常用方法,DataInputStream,java.io.DataInputStream 继承自FilterInputStream,允许应用程序以与机器无关方式从基础输入流中读取Java基本数据类型。 DataInputStream提供了大量的read方法用以读取基本数据类型,例如:readInt(),readBoolean(),readDouble()等等。,FileInputStream,java.io.FileInputStream 继承自InputStream,可以把输入与磁盘文件关联起来以从中获取输入字节。这只需要我们在构造函数中给出文件名/路径即可。,FileOutputStream,java.io.Fi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省甘南县联考2024年化学九上期末复习检测模拟试题含解析
- 辽宁省朝阳市名校2024年八上物理期末质量跟踪监视试题含解析
- 广东省湛江市雷州市2024年化学九上期末监测试题含解析
- 分公司合作成立及地方市场拓展运营合同
- 餐饮行业食品安全风险评估与监管合同
- 未来企业中的领导力趋势与挑战
- 2025年纪检监察知识试题库(含答案)
- 高分子材料在航空航天领域的应用研究
- 算力仓储行业租赁服务解析
- 2025至2030中国盐酸美西律片行业发展趋势分析与未来投资战略咨询研究报告
- 清廉讲堂活动方案
- 2025年医保知识考试题库及答案:医保信息化建设应用法律法规试题
- 环境现场采样培训
- 陕西省专业技术人员继续教育2025公需课《党的二十届三中全会精神解读与高质量发展》20学时题库及答案
- 2024-2025学年人教版数学五年级下学期期末试卷(含答案)
- 环保设施安全风险评估报告
- 食品工程原理(李云飞)第二章ppt 传热
- 二氧化碳气体保护焊.ppt
- 仪表工程质量控制点等级划分表
- 广东某高层小区屋面飘板模板工程专项施工方案
- IPC-A-610F通用焊接标准(经典实用)
评论
0/150
提交评论