版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、,高级软件人才实作培训专家!,北京传智播客教育 ,Java 预热班讲义,讲师:毕向东,高级软件人才实作培训专家! IO(Input Output)流, ,IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 Java用于操作流的对象都在IO包中 流按操作数据分为两种:字节流与字符流 。 流按流向分为:输入流,输出流。 北京传智播客教育 ,高级软件人才实作培训专家! IO流常用基类, ,字节流的抽象基类: InputStream ,OutputStream。 字符流的抽象基类: Reader , Writer。 注:由这四个类派生出来的子类名称都是 以其父类名作为子类名的后缀。
2、如:InputStream的子类FileInputStream。 如:Reader的子类FileReader。 北京传智播客教育 ,高级软件人才实作培训专家! IO程序的书写,导入IO包中的类, 进行IO异常处理 在finally中对流进行关闭 思考:, ,有了垃圾回收机制为什么还要调用close方法进行关 闭。 为什么IO异常一定要处理。,例程 北京传智播客教育 ,高级软件人才实作培训专家! 字符流创建文件,创建流对象,建立数据存放文件,FileWriter fw = new FileWriter(“Test.txt”);,调用流对象的写入方法,将数据写入流,fw.write(“text”)
3、;,关闭流资源,并将流中的数据清空到文件中。,fw.close();,不写close方法会有什么结果呢? 如果想在原有文件上继续加入新的数据呢? 北京传智播客教育 ,北京传智播客教育 ,高级软件人才实作培训专家!,完整代码,FileWriter fw = null; try,fw = new FileWriter(Test.txt); fw.write(text);,catch (IOException e),System.out.println(e.toString();,finally,If(fw!=null),try,fw.close();,catch (IOException e),S
4、ystem.out.println(e.toString();, ,高级软件人才实作培训专家! 字符流读取文件, ,建立一个流对象,将已存在的一个文件加载进 流。 FileReader fr = new FileReader(“Test.txt”); 创建一个临时存放数据的数组。 char ch = new char1024; 调用流对象的读取方法将流中的数据读入到数组 中。 fr.read(ch);,思考: 在加载文件时候是否是将文件全部加载进流 为什么定义数组,要定义多大呢? 北京传智播客教育 ,北京传智播客教育 ,高级软件人才实作培训专家! 完整代码 FileReader fr = nu
5、ll; try fr = new FileReader(c:test.txt); char buf = new char1024; int len= 0; while(len=fr.read(buf)!=-1) System.out.println(new String(buf,0,len); catch (IOException e) System.out.println(read-Exception :+e.toString(); finally if(fr!=null) try fr.close(); catch (IOException e),System.out.println(cl
6、ose-Exception :+e.toString();,高级软件人才实作培训专家! 注意:, ,定义文件路径时,可以用“/”或者“”。 在创建一个文件时,如果目录下有同名文 件将被覆盖。 在读取文件时,必须保证该文件已存在,,否则出异常。 练习:Copy一个文本文件。 北京传智播客教育 ,高级软件人才实作培训专家! 字符流的缓冲区, ,缓冲区的出现提高了对数据的读写效率。 对应类 BufferedWriter BufferedReader 缓冲区要结合流才可以使用。 在流的基础上对流的功能进行了增强。 北京传智播客教育 ,高级软件人才实作培训专家! 装饰设计模式, ,对原有类进行了功能的改
7、变,增强。 装饰模式的基本格式。 它与继承有什么不同? 了解BufferedReader的原理。,练习: 模拟一个BufferedReader类。 模拟一个LineNumberReader类。 北京传智播客教育 ,高级软件人才实作培训专家! 字节流, ,基本操作与字符流类相同 但它不仅可以操作字符,还可以操作其他 媒体文件 例程 Copy一个Jpg文件。 北京传智播客教育 ,高级软件人才实作培训专家! 字节流的缓冲区,同样是提高了字节流的读写效率。,练习: 通过几种方式对MP3的进行拷贝,比较它们的 效率。,模拟一个BufferedInputStream 北京传智播客教育 ,高级软件人才实作培
8、训专家! 转换流, ,InputStreamReader,OutputStreamWriter 转换流的由来 字符流与字节流之间的桥梁 方便了字符流与字节流之间的操作 转换流的应用 字节流中的数据都是字符时,转成字符流操作 更高效。 例程:标准输入输出。 北京传智播客教育 ,高级软件人才实作培训专家! 标准输入输出流, ,System类中的字段:in,out。 它们各代表了系统标准的输入和输出设备。 默认输入设备是键盘,输出设备是显示器。 System.in的类型是InputStream. System.out的类型是PrintStream是 OutputStream的子类FilterOutp
9、utStream 的子 类. 北京传智播客教育 ,高级软件人才实作培训专家! 标准输入输出流示例, ,例:获取键盘录入数据,然后将数据流向显示器,那么显示器就是目 的地。 通过System类的setIn,setOut方法对默认设备进行改变。, ,System.setIn(new FileInputStream(“1.txt”);/将源改成文件1.txt。 System.setOut(new FileOutputStream(“2.txt”);/将目的改成文件2.txt, ,因为是字节流处理的是文本数据,可以转换成字符流,操作更方便。 BfferedReader bufr = new Buffe
10、redReader(new InputStreamReader(System.in); BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out); 北京传智播客教育 ,高级软件人才实作培训专家! 流的基本应用小节, ,流是用来处理数据的。 处理数据时,一定要先明确数据源,与数据目的 地(数据汇)。 数据源可以是文件,可以是键盘。 数据目的地可以是文件、显示器或者其他设备。 而流只是在帮助数据进行传输,并对传输的数据进 行处理,比如过滤处理.转换处理等。 北京传智播客教育 ,北京传智播客教育 ,高级软件
11、人才实作培训专家! 字符流继承体系简图 字符流,Reader,Writer,InputStreamReader FileReader,OutputStreamWriter FileWriter,BufferedReader,Buffere,FileInputStream,高级软件人才实作培训专家! 字节流继承体系简图 字节流,FilterInputStream BufferedInputStream 北京传智播客教育 ,FilterOutputStream BufferedOutputStream,InputStream,OutputStream,高级软件人才实作培训专家! File类, ,用
12、来将文件或者文件夹封装成对象 方便对文件与文件夹的属性信息进行操作 。 File对象可以作为参数传递给流的构造函 数。 了解File类中的常用方法。 北京传智播客教育 ,高级软件人才实作培训专家! 递归, ,函数自己调用自己。 注意:递归时一定要明确结束条件。 应用场景: 当某一功能要重复使用时。 练习: 列出一个文件夹下所有的子文件夹以及子文件 思考: 1,删除一个目录的过程是如何进行的? 北京传智播客教育 ,高级软件人才实作培训专家! IO包中的其他类, ,RandomAccessFile 随机访问文件,自身具备读写的方法。 通过skipBytes(int x),seek(int x)来达
13、到随机访 问。 管道流 PipedInputStream和PipedOutputStream 输入输出可以直接进行连接,通过结合线程使用。 北京传智播客教育 ,高级软件人才实作培训专家! IO包中的其他类, ,打印流 PrintWriter与PrintStream 可以直接操作输入流和文件。 序列流 SequenceInputStream 对多个流进行合并。 操作对象 ObjectInputStream与ObjectOutputStream 被操作的对象需要实现Serializable (标记接口); 练习:文件分割程序。 北京传智播客教育 ,高级软件人才实作培训专家! IO包中的其他类, ,
14、操作基本数据类型 DataInputStream与DataOutputStream 操作字节数组 ByteArrayInputStream与ByteArrayOutputStream 操作字符数组 CharArrayReader与CharArrayWrite 操作字符串 StringReader 与 StringWriter 北京传智播客教育 ,高级软件人才实作培训专家! 字符编码, ,字符流的出现为了方便操作字符。 更重要是的加入了编码转换。 通过子类转换流来完成。 InputStreamReader OutputStreamWriter 在两个对象进行构造的时候可以加入字符 集。 北京传智播客教育 ,高级软件人才实作培训专家! 编码表的由来, ,计算机只能识别二进制数据,早期由来是 电信号。 为了方便应用计算机,让它可以识别各个 国家的文字。 就将各个国家的文字用数字来表示,并一 一对应,形成一张表。 这就是编码表。 北京传智播客教育 ,高级软件人才实作培训专家! 常见的编码表,ASCII:美国标准信息交换码。,用一个字节的7位可以表示。,ISO8859-1:拉丁码表。欧洲码表,用一个字节的8位表示。, ,GB2312:中国的中文编码表。 GBK:中国的中文编码表升级,融合了更多的中文文字符
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车场停车管理制度
- 1.公路路基路面智能碾压质量检测与控制规程
- 临床免疫初级试题及答案
- 学校卫生协作管控制度
- 学府教育考试试题及答案
- 湖南省岳阳市岳阳楼区2026年中考二模英语试卷附答案
- 2025年临床执业医师《基础医学》阶段测试
- 药品效期管理试题及答案
- 医疗风险防范三基三严考试题库及答案
- 糖尿病知识试题及参考答案
- 山东省2026年春季高考技能测试建筑类专业模拟试题及答案解析
- 2026年学士学位英语测试题及答案
- (一模)2026年深圳市高三年级第一次调研考试政治试卷(含官方答案)
- 上海市普陀区学校(五四制)2025-2026学年六年级上学期期中语文试题(解析版)
- XX初中校长在2026年春季学期教科研工作推进会上的发言
- 2026年伊春职业学院单招职业适应性考试题库附参考答案详解(b卷)
- 城市供水排水管网养护指南
- JJF(皖) 252-2026 球压试验装置校准规范
- 2026年无锡工艺职业技术学院单招综合素质考试题库带答案解析
- 2026年湖南铁道职业技术学院单招职业技能笔试备考试题含答案解析
- 三维成像技术课件
评论
0/150
提交评论