Java程序设计与应用 课件【ch09】输入输出流_第1页
Java程序设计与应用 课件【ch09】输入输出流_第2页
Java程序设计与应用 课件【ch09】输入输出流_第3页
Java程序设计与应用 课件【ch09】输入输出流_第4页
Java程序设计与应用 课件【ch09】输入输出流_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

输入输出流第九章Java程序设计与应用新工科建设之路·计算机类规划教材01文件类PARTONE文件类在java.io包中,File类代表文件和目录,主要实现对文件和目录的信息访问。如文件的权限、时间、日期和目录路径等,还包括创建文件或文件夹。但File类对象并不提供对文件内容的处理功能,需要获取文件内容时要用到数据流。文件类创建File类对象File类有三种构造方法,以不同的参数形式来接收文件和目录名信息。1.publicFile(Stringpath):用指定的字符串参数path创建一个File类对象,path可以是带绝对路径的文件名或带相对路径的文件名,path也可以是磁盘上的目录。如:文件类创建File类对象2.publicFile(Stringpath,Stringname):根据指定参数path和name创建一个对应磁盘文件或目录的File类对象。参数path指明文件或目录的路径,name指明文件名或目录名。将路径和文件名分开便于管理和修改同一目录的文件。如:文件类创建File类对象3.publicFile(Filedir,Stringname):根据参数dir和name创建一个对应的磁盘文件或目录的File类对象。参数dir是一个已经存在的File类对象,表示文件或目录的路径,name表示文件或目录名。如:文件类获取文件或目录的信息File类中获取文件的信息包括文件的名字、长度、路径等。获取文件信息的常用方法如表9-1所示。文件类获取文件或目录的信息【例9-1】使用File类获取文件信息。文件类获取文件或目录的信息程序运行结果如下:02字节流和字符流PARTTWO字节流和字符流计算机程序一般都要进行输入和输出处理。例如,从键盘读取数据、从文件中读取数据或者向文件写入数据等。在Java中,把这些不同类型的输入和输出操作抽象类称为流,用统一的接口来表示。通过流的方式,允许程序使用相同的方式来访问不同的输入和输出设备。字节流和字符流Java的流式输入和输出建立在四个抽象类的基础上,即InputStream类、OutputStream类、Reader类和Writer类。InputStream类和OutputStream类为字节流设计,Reader类和Writer类为字符流设计。字节流和字符类形成分离的层次结构。字节流和字符流字节流以字节为基本处理单位,字符流以16位的Unicode表示的字符为基本处理单位。一般说来,处理字符或字符串时应使用字符流,处理字节或二进制对象时应使用字节流。字节流和字符流字节流Java中的字节流用于处理字节的输入和输出,包括读写二进制数据方面等内容。字节流分为字节输入流和字节输出流,从中读取一系列字节的对象称为字节输入流,而向其中写入一系列字节的对象称为字节输出流。java.io包中的InputStream类和OutputStream类分别是字节输入流和字节输出流的根类,它们都是抽象类,不能创建对象,可以使用其子类来进行实例化。字节流和字符流01字节输入流InputStream类是所有字节输入流的父类,它作为父类,定义了所有Java字节输入流所具有的共性。InputStream类继承层次结构如图9-1所示。字节流和字符流01字节输入流字节输入流常用子类及其功能如表9-2所示。字节流和字符流01字节输入流InputStream类定义的方法如表9-3所示。字节流和字符流字节流和字符流01字节输入流InputStream类常用方法如下。(1)intread():读取一个字节的数据,并返回读到的字节数。当到达文件末尾时,返回-1。(2)intread(bytebuffer[]):将数据读入字节数组,同时返回实际读到的字节数。(3)intread(bytebuffer[],intoffsetintnumBytes):将输入读入字节数组,参数offset表示数组的偏移位置,也就是第一个字节应放在哪个位置;参数numBytes表示读取的最大字节数。字节流和字符流02字节输出流OutputStream类是所有字节输出流的父类,它是抽象类,也有若干子类。OutputStream类的继承层次结构如图9-2所示。字节流和字符流02字节输出流字节输出流常用子类及其功能如表9-4所示。字节流和字符流02字节输出流OutputStream类定义的方法如表9-5所示。字节流和字符流字符流同字节流一样,字符流有两个抽象的父类,分别是Reader类和Writer类。其中Reader类是字符输入流,用于从某个源读取字符。Writer类是字符输出流,用于向某个目标写入字符。字节流和字符流01字符输入流Reader类是所有字符输入流的父类,Reader类与InputStream类的功能体系大体上是一致的,区别在于Reader类的方法是以字符为最基本单位。Reader类的继承层次结构如图9-3所示。字节流和字符流01字符输入流字符输入流常用子类及其功能如表9-6所示。字节流和字符流01字符输入流Reader类定义的方法如表9-7所示。字节流和字符流02字符输出流Writer类是所有字符输出流的父类,Writer类与OutputStream类的功能体系大体上是一致的,区别在于Writer类的方法是以字符为最基本单位。Writer类的继承层次结构如图9-4所示。字节流和字符流02字符输出流字符输出流常用子类及其功能如表9-8所示。字节流和字符流02字符输出流Writer类定义的方法如表9-9所示。03文件流PARTTHREE文件流在Java程序的输入和输出中,文件流是用得比较广泛的一种形式。在Java的I/O库中,Reader类和Writer类用于对文本文件进行操作,而InputStream类和OutputStream类可以对文本文件和二进制文件进行操作。文件流FileInputStream类和FileOutputStream类文件字节流是指文件输入字节流FileInputStream类和文件输出字节流FileOutputStream类,它们完成字节的读写操作。FileInputStream类是InputStream类的子类,按字节读取文件中的数据。它的两个常用的构造函数如下:文件流FileInputStream类和FileOutputStream类FileInputStream类是调用read()方法顺序地读取文件内容,直到文件末尾或流被关闭。在生成FileInputStream类的对象时,如果指定的文件找不到,会发生FileNotFoundException异常,因此需要捕获或者抛出声明。FileOutputStream类与FileInputStream类相对应,它是OutputStream类的子类,将数据以字节的方式写入文件。文件流FileInputStream类和FileOutputStream类它的常用构造函数如下:FileOutputStream类是调用write()方法顺序地向文件写入数据。如果创建输出流对象时,指定的文件不存在,则会创建一个新的文件,否则源文件的内容会被新写入的内容覆盖。如果试图打开一个只读文件,会引发一个IOException异常。文件流文件字符流文件字符流是指文件输入字符流FileReader类和文件输出字符流FileWriter类,用于创建文件的字符输入流和字符输出流对象,主要应用于读写文本格式的文件。FileReader类创建了一个可以读取文件内容的Reader类。它最常用的构造函数如下:文件流文件字符流FileWriter类创建了一个可以写文件的Writer类。它最常用的构造函数如下:其中,如果append参数为true,则将数据写入文件末尾处,相当于追加信息。如果append参数为false,则将数据写入文件开始处。04缓冲流PARTFOUR缓冲流为了提高数据读写的效率,Java提供了带缓冲功能的流类,包括字节缓冲流(BufferedInputStream类和BufferedOutputStream类)和字符缓冲流(BufferedReader类和BufferedWriter类)。这些类的内部建立了一个缓冲数据的数组,当读写数据时,并不马上将数据写到所连接的流中,而是先写入缓冲区。缓冲流当缓冲区满后或者关闭流时,一次性将缓冲区的数据写入。这样减少了读写请求的次数,提高了数据读写的效率。因此使用缓冲流的目的就是提高I/O的效率。缓冲流字节缓冲流Java的BufferedInputStream类称为字节缓冲输入流类,允许把任何InputStream类包装成缓冲流。BufferedInputStream类有两个构造函数,其语法格式如下:第一种形式生成了一个默认缓冲长度为2048字节的缓冲流。第二种形式缓冲区的大小是由bufSize传入的。在创建缓冲输入流对象时要指定一个InputStream类作为数据源。缓冲流字节缓冲流BufferedOutputStream类称为字节缓冲输出流类,在创建对象时,要指定一个OutputStream类作为数据流向。下面是两个可用的构造函数:第一种形式创建了一个使用512字节缓冲区的缓冲流。第二种形式缓冲区的大小由bufSize参数传入。缓冲流字符缓冲流BufferedReader类是Reader类的子类,称为字符缓冲输入流类,在其内部自带一个缓冲数据的数组。它有两个构造函数:第一种形式创建一个默认缓冲区长度的缓冲字符流。第二种形式缓冲区的长度由bufSize传入。在创建缓冲输入流对象时,要指定一个字符输入流作为数据源。缓冲流字符缓冲流BufferedWriter类是Writer的子类,称为字符缓冲输出流。内部自带一个缓冲数据的数组。BufferedWriter类有两个构造函数:第一种形式创建了使用默认大小缓冲区的缓冲流。第二种形式中的缓冲区大小是由bufSize参数传入的。05转换流PARTFIVE转换流一般情况下,在进行内容的输入和输出时需要使用字节流或字符流,但是,有时需要将字符流转换成字节流形式,或者字节流转换成字符流形式。因此需要进行转换流类的操作。InputStreamReader类和OutputStreamWriter类用来在字节流与字符流之间进行转换。转换流InputStreamReader类是Reader类的子类,用于将字节输入流转换为字符输入流,即将字节流的输入对象转为字符流的输入对象。OutputStreamWriter类是Writer类的子类,用于将字符输出流转换为字节输出流,即将字符输出流的对象转换为字节输出流的对象。InputStreamReader类的构造方法如下。转换流01InputStreamReader(InputStreamin)使用默认字符集创建一个inputstreamreader对象。02InputStreamReader(InputStreamin,Charsetcs)使用给定的字符集创建一个inputstreamreader对象。转换流04InputStreamReader(InputStreamin,StringcharsetName)使用指定的字符集创建一个inputstreamreader对象。03InputStreamReader(InputStreamin,CharsetDecoderdec)使用给定的字符集解码创建一个inputstreamreader对象。转换流以上构造方法使用指定的字符集读出字节,并将它们解码成字符。字符集可以用名字指定字符集或者使用平台默认的字符集。其中参数in为字节输入流对象;charsetName参数为字符串表示的字符编码名称。转换流OutputStreamWriter类的构造方法如下:使用默认的字符编码创建一个OutputStreamWriter类,语法如下:使用给定的字符集创建一个OutputStreamWriter类,语法如下:使用给定的字符集编码创建一个OutputStreamWriter类,语法如下:06随机读写文件类PARTSIX随机读写文件类Java提供了RandomAccessFile类来处理文件的随机读写,以类似于C/C++的文件指针的方式在文件中定位,并随机读取指定位置的内容。RandomAccessFile类从Object类继承,实现了DataInput和DataOutput两个接口。它不仅支持读写字节的方法,还支持读写基本数据类型的方法。随机读写文件类RandomAccessFile类常用构造方法如下:创建一

温馨提示

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

评论

0/150

提交评论