JAVA基础(九)--IO流.ppt_第1页
JAVA基础(九)--IO流.ppt_第2页
JAVA基础(九)--IO流.ppt_第3页
JAVA基础(九)--IO流.ppt_第4页
JAVA基础(九)--IO流.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,Java 基础课程(一),连地球都可以在茫无边际的天空里发现自己的轨道,何况我们? 人只要不失去方向,就不会失去自己,PPT制作:android 教学部,2,目录,IO概述 文件和文件IO IO的使用 字节流 字符流 文件流 系统输入流,3,IO概述,课前思考: 如何读取硬盘上的某个文件内容? 如何知道文件系统中有哪些目录和子目录? 如何往硬盘上写文件? 如何接收键盘输入?,4,IO概述,流: 在计算机中,“流”的概念是1984年由C语言第一次引入的。 流可以看作是一个流动的数据缓冲区,数据从数据源流向数据目的地。 流是一连串流动的数据信号,是以先进先出的方式发送和接收数据的通道。 所谓“流(stream)”,可以看作是数据在文件或程序之间的传递。,5,IO概述,按照数据的输入输出方式分为输入流和输出流。 输入流:将外部数据读入到内存。 输出流:将内存中的数据写出到外部。 注:流的流向是相对内存的。 按照处理数据的单位不同分为字节流和字符流。 (1)Java把处理二进制数据的流称为字节流,字节流每次处理一个字节的数据;以Stream结尾,说明是一字节流。 (2)把处理某种格式的特定数据称为字符流,字符流每次处理一个字符的数据。以Reader Writer结尾,说明是一字符流。,6,IO的使用,在Java开发环境中,主要是由包java.io中提供的一系列的类和接口来实现输入/输出处理。 而标准输入/输出处理则是由包java.lang中提供的类来处理的,这些类又都是从包java.io中的类继承而来的。 对文件或流进行操作,则必须显式地声明如下语句: import java.io.*; I/O流操作的一般步骤: 构造一个与介质相关的I/O对象,以提供一种低层次的方法将数据输入或输出到相应的介质; 将与介质相关的对象强制类型转换为它的父类(即抽象I/O类),并利用该对象构造一个流对象。这样便建立起了流类对象与介质相关对象的关联; 这时就可利用流对象的I/O方法进行相应介质上的数据读写。,7,文件和文件IO,File类用于获取和处理磁盘上文件和目录的相关信息。 File类是java.io包中唯一处理磁盘文件和目录的类,它定义的对文件和目录操作的方法 都是与平台无关的。 注意:File对象并不能直接对文件进行读/写操作,只能查看文件的属性; File类的构造方法: 注意:调用构造函数只能创建一个File对象,而不是在文件系统中创建了一个文件. 创建一个文件:file.createNewFile(). 创建一个目录:1、mkdir(); 创建父目录已经存在的目录 2、mkdirs();创建多层目录,8,文件和文件IO,注意: 在Unix/Linux操作系统下,路径分隔符为“/”,而在Windows和DOS下的路径分隔符为“”。Java对这两种分隔符都支持。但是如果使用“”作为分隔符,注意要以转义字符“”来代替,例如以“c:sunjdk”表示“c:sunjdk”。 在Java程序中,我们可以使用File.pathSeparator来表示与系统无关的路径分隔符。 示例: String separator = File.separator; String fileName = “myfile.txt“; String directory =“mydir1“+separator+“mydir2“; File f = new File(directory,fileName);,9,文件和文件IO,相对路径和绝对路径: 绝对路径名是完整的路径名,不需要任何其他信息就可以定位自身表示的文件。 相对路径名必须使用来自其他路径名的信息进行解释。 默认情况下,java.io 包中的类总是根据当前用户目录来分析相对路径名。 此目录由系统属性 user.dir 指定,通常是 Java 虚拟机的调用目录.,10,文件和文件IO,File练习: 分别使用相对路径和绝对路径创建两个文件对象,练习上述File类的方法。,11,字节流,12,字节流,字节流类是专门处理以字节为传输单位的IO流类。 InputStream和OutputStream分别是输入字节流与输出字节流的抽象父类。 字节输入流的类以及方法如下:,13,字节流,字节输出流的类及方法如下:,14,字节流,FileInputStream类称为文件输入流,继承于InputStream类,是进行文件读操作的最基本类。 它的作用是将文件中的数据输入到内存中,我们可以利用它来读文件。 由于它属于字节流,因此在读取Unicode字符(如中文)的文件时可能会出现问题。,15,字节流,FileInputStream类常用方法:,16,字节流,FileOutputStream类称为文件输出流,继承于OutputStream类,是进行文件写操作的最基本类; 它的作用是将内存中的数据输出到文件中,我们可以利用它来写文件。,17,字节流,FileOutputStream类的常用方法。,18,字节流,FileInputStream类和FileOutputStream类是成对出现的,一个进行输入(读文件)操作,一个进行输出(写文件)操作; 由于采用字节方式进行数据传输,不必考虑数据的格式问题,这两个类对文件操作的效率较高; 可以使用这两个类完成复制文件的操作。 练习: 将D盘中的某个文件复制到E盘根目录下。,19,字节流,java.io包中提供了FilterInputStream类和FilterOutputStream类分别对其他输入/输出流进行特殊处理。 FilterInputStream类和FilterOutputStream类都是抽象类,因此它们均不能实例化对象。 FilterInputStream类有3个子类: BufferedInputStream,DataInputStream和PushbackInputStream; FilterOutputStream类也有3个子类: BufferedOutputStream,DataOutputStream和PrintStream BufferedInputStream和BufferedOutputStream类称为缓冲字节流,它引入了针对内存缓冲区的操作,从而提高了读写数据的效率。 注意:过滤流不直接与底层的数据“打交道” ,必须先 指定节点流对象处理底层的数据,然后把节点流对象作为过滤流对象的实参使用。,20,字节流,21,字节流,1、BufferedInputStream BufferedInputStream的数据成员buf是一个字节数组,默认为2048个字节,当读取数据来源时,BufferedInputStream会尽量将buf填满。当使用read()方法时,实际上是先读取buf中的数据,而不是直接对数据来源做读取。当buf不足是, BufferedInputStream才会在实现给定的InputStream对象的read方法。 2、 BufferedOutputStream BufferedOutputStream的成员buf也是一个字节数组,默认为512字节,当使用write()方法写入数据时,实际上会先将数据写至buf中,当buf已满时才会实现给定的OutputStream对象的writer方法,将buf数据写至目的地。,22,字节流,java.io 包中含有两个接口DataInput 和DataOutput,这两个接口设计了一种较为高级的 数据输入输出方式: 除了可处理字节和字节数组外,还可以处理int、float、boolean 等基本 数据类型,这些数据在文件中的表示方式和它们在内存中的一样,无须转换。 DataInput 提供了read()、readInt()、readByte(),, DataOutput 提供了write()、writeChar()、writeFloat(),。 数据流类DataInputStream和DataOutputStream分别实现了DataInput和DataOutput接口,在提供了字节流的读写手段的同时,还可以实现对文件中的不同数据类型的读写。,23,字节流,DataInputStream类可以输入任何类型的数据,但它不可以单独使用,需要要配合其它字节输入流一起使用; DataInputStream类的构造方法只有一种方式: 将文件输入流包装成数据输入流,以便从文件中读取各种类型的数据 FileInputStream fis = new FileInputStream(“data.dat“); DataInputStream dis = new DataInputStream(fis);,24,字节流,25,字符流,26,字符流,字符流是以Reader和Writer为基础派生的一系列类。 同类InputStream和OutputStream一样,Reader和Writer也是抽象类,只提供了一系列用于字符流处理的接口。 字符缓冲流BufferedReader和BufferedWriter。 除了read()和write()方法外,它还提供了整行字符处理方法: BufferedReader 提供了readLine() 方法,从输入流中读取一行字符,行结束标志为n、r或两者一起。 pu BufferedWriter 提供了newLine()方法,向输出流中写入一个行结束标志,它不是简单的换行符n或r,而是系统定义的行隔离标志(line separator)。,27,文件流,FileReader类称为文件读取流,允许以字符流的形式对文件进行读操作,其构造方法有3种重载方式,以下是常用的几种: 该类将从文件中逐个地读取字符,效率比较低下,因此一般将该类对象包装到缓冲流中进行操作。,28,文件流,FileWriter类称为文件写入流,以字符流的形式对文件进行写操作,其构造方法有5种重载,以下是常用的几种: 与FileReader类相似,FileWriter类同样需要使用缓冲流进行包装。,29,系统输入流,System.in的read方法可以从控制台接受输入; 但由于in实际上是一个InputStream类的对象,它只能以字节形式接收数据,并且一次只能接受一个字节,这使输入操作很不便; 必须将System.in进行处理,才可以顺利地从控制台接受输入,这将使用到: InputStreamReader类 BufferedReader类,30,系统输入流,InputStreamReader类用于将InputStream类型

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论