第6章Java输入与输出.ppt
《第6章Java输入与输出.ppt》由会员分享,可在线阅读,更多相关《第6章Java输入与输出.ppt(74页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第6章 Java输入与输出(I/O)信息科学与技术学院信息科学与技术学院软件工程系软件工程系王建民王建民Phone:13933017276E_mail:2第 6 章 Java输入与输出(I/O)6.1 File6.1 File类类6.2 6.2 流流6.3 6.3 字字 节节 流流6.4 6.4 字符流字符流6.5 RandomAccessFile6.5 RandomAccessFile类类6.6 6.6 过过 滤滤 器器 流流6.7 6.7 对象序列化对象序列化(objectcserializationobjectcserialization)6.8 Scanner6.8 Scanner类类
2、第 6 章 Java输入与输出(I/O)6.1 File6.1 File类类6.2 6.2 流流6.3 6.3 四个基本输入输出流四个基本输入输出流6.4 6.4 节点流节点流6.5 6.5 处理流处理流 6.6 RandomAccessFile6.6 RandomAccessFile类类346.1 File类File类是一个与流无关的类。File类的对象可以获取文件及其文件所在的目录、文件的长度等信息。创建一个File对象的常用构造方法有3种:(1)File(String pathname)(2)File(String path,String filename)(3)File(File fi
3、le,String filename)5File类(1)File(String pathname)该构造方法通过指定的文件路径字符串来创建一个新File实例对象。语法:pathname:文件路径字符串,包括文件名称。就是将一个代表路径的字符串转换为抽象的路径。new File(filename);6File类(2)File(String path,String filename)该构造方法根据指定的父路径字符串和子路径字符串(包括文件名称)创建File类的实例对象。语法:path:父路径字符串。filename:子路径字符串,不能为空。new File(path,filename);2 2、F
4、ileFile类构造器类构造器FileFile(String pathString path)Path可以是文件的完整路径名,也可只有路径而无文件名;路经可以是绝对路径,也可以是相对路径;路径或文件名可以是已存在的也可是新的,新的则被创建,旧的则被刷新。n例1:File file1=newFile(“f:javaaaa”);在已存在的f:java目录下新创建一个aaa目录,使用的是绝对路径,且只能创建一层新目录。n例2:File file2=new File(“bbb”);在当前工作目录下,创建bbb新目录的文件对象,使用的是相对路径n例3:File file3=new File(“f:jav
5、afile1.txt”);使用绝对路径,在已存在的f:java目录下创建一个文本文件对象。File类78File类(3)File(File file,String filename)该构造方法根据指定的File类的父路径和字符串类型的子路径(包括文件名称)创建File类的实例对象。语法:file:是父路径对象。filename:子路径字符串。File类包含了文件和文件夹的多种属性和操作方法。常用的方法如下表所示。new File(file,filename);2、File类构造器File(File dir,String name)n例4:File file1=new File(“f:javaa
6、aa”);File file6=new File(file1,”myfile.txt”);【例6-1】File类910方 法 名 称功 能 描 述getName()获取文件的名字getParent()获取文件的父路径字符串getPath()获取文件的相对路径字符串getAbsolutePath()获取文件的绝对路径字符串exists()判断文件或文件夹是否存在canRead()判断文件是否可读的isFile()判断文件是否是一个正常的文件,而不是目录canWrite()判断文件是否可被写入isDirectory()判断是不是文件夹类型isAbsolute()判断是不是绝对路径isHidden(
7、)判断文件是否是隐藏文件delete()删除文件或文件夹,如果删除成功返回结果为truemkdir()创建文件夹,如果创建成功返回结果为truemkdirs()创建路径中包含的所有父文件夹和子文件夹,如果所有父文件夹和子文件夹都成功创建,返回结果为truecreateNewFile()创建一个新文件length()获取文件的长度lastModified()获取文件的最后修改日期第 6 章 Java输入与输出(I/O)6.1 File6.1 File类类6.2 6.2 流流6.3 6.3 四个基本输入输出流四个基本输入输出流6.4 6.4 节点流节点流6.5 6.5 处理流处理流 6.6 Ran
8、domAccessFile6.6 RandomAccessFile类类11126.2 流在Java中,流是从源到目的地的字节的有序序列;流中的字节依据先进先出,具有严格的顺序,是一种顺序存取方式。Input stream(输入流)程序-数据源(文件、内存)-打开一个流-读数据流是有方向的:从输入流读入-不能写数据13Output stream(输出流)程序-数据-写入流-保存到目的地(文件、内存)流是有方向的:向输出流写入-不能读数据14流操作的过程Reading:1.open a stream2.while more information read information3.close t
9、he stream Writing:1.open a stream2.while more information write information3.close the stream156.2.1输入/输出流的分类 Java.io包中定义了多个流类型(类或抽象类)来实现输入、输出功能;可以从不同的角度对其进行分类:按数据流的方向不同可以分为输入流和输出流;按处理数据单位不同可以分为字节流和字符流;按照功能不同可以分为节点流和处理流。16输入/输出流输入流/输出流以java程序为标准。输入流输出流17字节流/字符流按处理数据单位不同可以分为字节流和字符流;字节流读取的最小单位是一个字节(1b
10、yte=8bit)而字符流一次可以读取一个字符(1char=2byte=16bit)。18节点流和处理流节点流为可以从一个特定的数据源(节点)读写数据(如:文件、内存)处理流是“连接”在已存在的流(节点流或处理流)之上,通过对数据的读写为程序提供强大的功能。19206.2.2 输入输出流输入输出流一般分为4种:n字节输入流n字节输出流n字符输入流n字符输出流21字节输入流InputStream类是字节输入流的抽象类,它是所有字节输入流的父类,其各种子类实现了不同的数据输入流。这些字节输入流的继承关系如下图所示。22字节输出流OutputStream类是字节输出流的抽象类,它是所有字节输出流的父
11、类,其子类实现了不同数据的输出流。继承关系如下图所示。23字符输入流 Reader类是字符输入流的抽象类,所有字符输入流的实现都是它的子类。Java中字符输入流的继承关系如下图所示。24字符输出流 Writer类是字符输出流的抽象类,所有字符输出流的实现都是它的子类。Java中字符输出流的继承关系如下图所示。256.2 字节流与字符流 字节流是以字节为单位来处理数据的,由于字节流不会对数据做任何转换,因此用来处理二进制的数据。以以字符字符为导向的为导向的streamstream基本上对有与之相对应的以基本上对有与之相对应的以字字节节为导向的为导向的streamstream。两个对应类实现的功能
12、相同,只是在操作时的导向不同两个对应类实现的功能相同,只是在操作时的导向不同如如 CharArrayReaderCharArrayReader:和:和ByteArrayInputStreamByteArrayInputStream的作用都的作用都是把内存中的一个缓冲区作为是把内存中的一个缓冲区作为InputStreamInputStream使用,所不同使用,所不同的是前者每次从内存中读取一个字节的信息,而后者每次的是前者每次从内存中读取一个字节的信息,而后者每次从内存中读取一个字符。从内存中读取一个字符。6.2 字节流与字符流2627第 6 章 Java输入与输出(I/O)6.1 File6.
13、1 File类类6.2 6.2 流流6.3 6.3 四个基本输入输出流四个基本输入输出流6.4 6.4 节点流节点流6.5 6.5 处理流处理流 6.6 RandomAccessFile6.6 RandomAccessFile类类6.7 6.7 对象序列化对象序列化(objectcserializationobjectcserialization)6.8 Scanner6.8 Scanner类类286.3.1 InputStream类与OutputStream类InputStream类是所有字节输入流的父类,它定义了操作输入流的各种方法。常用方法如下表所示。方 法 名 称功 能 描 述avai
14、lable()返回当前输入流的数据读取方法可以读取的有效字节数量read(byte bytes)从输入数据流中读取字节并存入数组b中read(byte bytes,int off,int len)从输入数据流读取len个字节,并存入数组bytes中reset()将当前输入流重新定位到最后一次调用mark()方法时的位置mark(int readlimit)在输入数据流中加入标记markSupported()测试输入流中是否支持标记close()关闭当前输入流,并释放任何与之关联的系统资源Abasract read()从当前数据流中读取一个字节。若已到达流结尾,则返回-129InputStrea
15、m类与OutputStream类OutputStream类是所有字节输出流的父类,它定义了输出流的各种操作方法。常用的方法如下表所示。方 法 名 称功 能 描 述available()返回当前输入流的数据读取方法可以读取的有效字节数量read(byte bytes)从输入数据流中读取字节并存入数组b中read(byte bytes,int off,int len)从输入数据流读取len个字节,并存入数组bytes中reset()将当前输入流重新定位到最后一次调用mark()方法时的位置mark(int readlimit)在输入数据流中加入标记markSupported()测试输入流中是否支持
16、标记close()关闭当前输入流,并释放任何与之关联的系统资源Abasract read()从当前数据流中读取一个字节。若已到达流结尾,则返回-1306.3.2 字符流 字符流(charactercstreams)用于处理字符数据的读取和写入,它以字符为单位。Reader类和Writer类是字符流的抽象类,它们定义了字符流读取和写入的基本方法,各个子类会依其特点实现或覆盖这些方法。316.3.2 Reader类与Writer类 Reader类是所有字符输入流的父类,它定义了操作字符输入流的各种方法。常用方法如下表所示。方法名称功 能 描 述read()读入一个字符。若已读到流结尾,则返回值为1
17、read(char)读取一些字符到char数组内,并返回所读入的字符的数量。若已到达流结尾,则返回-1reset()将当前输入流重新定位到最后一次调用mark()方法时的位置skip(long n)跳过参数n指定的字符数量,并返回所跳过字符的数量close()关闭该流并释放与之关联的所有资源。在关闭该流后,再调用 read()、ready()、mark()、reset()或 skip()将抛出异常32Reader类与Writer类 Writer类是所有字符输出流的父类,它定义了操作输出流的各种方法。常用方法如下表所示。方 法 名 称功 能 描 述write(int c)将字符c写入输出流wri
18、te(String str)将字符串str写入输出流write(char cbuf)将字符数组的数据写入到字符输出流flush()刷新当前输出流,并强制写入所有缓冲的字节数据close()向输出流写入缓冲区的数据,然后关闭当前输出流,并释放所有与当前输出流有关的系统资源6.3.2、标准输入/输出n在在java java 中:中:n“标准输入标准输入”是是System.inSystem.in对象,对象,n“标准输出标准输出”是是System.out System.out 对象,对象,n“标准错误输出标准错误输出”是是System.errSystem.err对象。对象。n 每当每当mainmain
19、方法被执行时方法被执行时,就就自动生成上述三个对象自动生成上述三个对象nSystem.outSystem.out和和System.errSystem.err已预封装成一个已预封装成一个PrintStreamPrintStream对象,对象,能直接使用。能直接使用。nSystem.inSystem.in是一个原始的是一个原始的InputStreamInputStream,未进行任何封装处理,未进行任何封装处理,必须事先封装必须事先封装System.inSystem.in,否则不能从中读取数据。例如:我,否则不能从中读取数据。例如:我们希望用们希望用readLine()readLine()每次从标
20、准输入中读取一行输入信息,每次从标准输入中读取一行输入信息,然后显示出来,就需要将然后显示出来,就需要将System.inSystem.in封装到一个封装到一个DataInputStreamDataInputStream或者或者BufferedReaderBufferedReader中。中。331、标准输入/输出示例34*356.3.3 输入/输出流体系 分类分类字节输入流字节输入流字节输出流字节输出流字符输入流字符输入流字符输出流字符输出流抽象基类抽象基类InputStreamOutputStreamReaderWriter访问文件访问文件FileInputStreamFileOutputS
21、treamFileReaderFileWriter访问数组访问数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter访问管道访问管道PipedInputStreamPipedIOutputStreamPipedIReaderPipedIWriter访问字符串访问字符串StringReaderStringWriter缓冲流缓冲流BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter转换流转换流InputStream Reade
22、rOutputStream Writer对象流对象流ObjectInputStreamObjectOutputStream打印流打印流PrintStreamPrintWriter35import java.io.*;public class StringDemopublic static void main(String args)String s;InputStreamReader ir;BufferedReader in;ir=new InputStreamReader();/创建标准的输入创建标准的输入/输出流输出流in=new (ir);trydos=;/从键盘读取一行字符串从键盘读取
23、一行字符串if(s!=null)System.out.println(“Reader:”+s);/输出读取输出读取数据数据while ;/判断输入判断输入“Exit”结束输入结束输入catch(Exception e)示例:创建StringDemo类,实现字符串的输入输出。System.inBufferedReaderin.readLine()(!(s.equals(exit)?程序结束了吗。丢了哪一步?程序结束了吗。丢了哪一步?3637第 6 章 Java输入与输出(I/O)6.1 File6.1 File类类6.2 6.2 流流6.3 6.3 四个基本输入输出流四个基本输入输出流6.4 6
24、.4 节点流节点流6.5 6.5 处理流处理流 6.6 RandomAccessFile6.6 RandomAccessFile类类6.7 6.7 对象序列化对象序列化(objectcserializationobjectcserialization)6.8 Scanner6.8 Scanner类类386.4.1 FileInputStream类 FileInputStream类是InputStream类的子类。它实现了文件的读取,是文件字节输入流。该类适用于比较简单的文件读取,该类的所有方法都是从InputStream类继承并重写的。创建文件字节输入流常用的构造方法有两种:nFileInpu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 Java输入与输出 Java 输入 输出
限制150内