电子教案-第9章.ppt
《电子教案-第9章.ppt》由会员分享,可在线阅读,更多相关《电子教案-第9章.ppt(47页珍藏版)》请在三一办公上搜索。
1、第九章 输入、输出流,本章导读1.文件2.文件字节流3.文件字符流4.从键盘读取数据5缓冲流6数组流,7字符串流8数据流9管道流10对象流11.序列化与对象克隆12.随机读写流13.文件锁,当程序需要读取磁盘上的数据或将程序中得到数据存储到磁盘时,就可以使用输入输出流,简称I/O流。I/O流提供一条通道程序,可以使用这条通道读取“源”中的数据,或把数据送到“目的地”。I/O流中的输入流的指向称做源,程序从指向源的输入流中读取源中的数据;输出流的指向称做目的地,程序通过向输出流中写入数据把信息传递到目的地。虽然I/O流经常与磁盘文件存取有关,但是程序的源和目的地也可以是键盘、鼠标、内存或显示器窗
2、口。,Java的I/O流库提供大量的流类(在包java.io中)。其中有4个重要的abstract类:1InputStream(字节输入流)2Reader(字符输入流)3OutputStream(字节输出流)4Writer(字符输出流)其中InputStream 和Reader类为其子类提供了重要的读取数据的read方法,OutputStream和Writer类为其子类提供了重要的写入数据的write方法。我们将陆续介绍它们的子类及用法。,9.1 文件,Java使用File类创建的对象来获取文件本身的一些信息,例如文件所在的目录、文件的长度、文件读写权限等,文件对象并不涉及对文件的读写操作。创
3、建一个File对象的构造方法有3个:File(String filename);File(String directoryPath,String filename);File(File f,String filename);其中,filename是文件名字,directoryPath是文件的路径,f是指定成一个目录的文件。使用File(String filename)创建文件时,该文件被认为是与当前应用程序在同一目录中。,1文件的属性经常使用File类的下列方法获取文件本身的一些信息:public String getName()获取文件的名字。public boolean canRead()
4、判断文件是否是可读的。public boolean canWrite()判断文件是否可被写入。public boolean exits()判断文件是否存在。public long length()获取文件的长度(单位是字节)。,public String getAbsolutePath()获取文件的绝对路径。public String getParent()获取文件的父目录。public boolean isFile()判断文件是否是一个正常文件,而不是目录。public boolean isDirectroy()判断文件是否是一个目录。public boolean isHidden()判断文
5、件是否是隐藏文件。public long lastModified()获取文件最后修改的时间(时间是从1970年午夜至文件最后修改时刻的毫秒数,2目录(1)创建目录 File对象调用方法:public boolean mkdir()创建一个目录,如果创建成功返回true,否则返回false(如果该目录已经存在将返回false)。(2)列出目录中的文件 如果File对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录:public String list()用字符串形式返回目录下的全部文件,public File listFiles()用File对象形式返回目录下的全部文件。,我
6、们有时需要列出目录下指定类型的文件,比如.java、.txt等扩展名的文件。可以使用File类的下述两个方法,列出指定类型的文件,public String list(FilenameFilter obj)该方法用字符串形式返回目录下的指定类型的所有文件。public File listFiles(FilenameFilter obj)该方法用File对象返回目录下的指定类型所有文件。FilenameFilter是一个接口,该接口有一个方法:public boolean accept(File dir,String name);,3文件的创建与删除 当使用File类创建一个文件对象后,例如 F
7、ile f=new File(c:myletter,letter.txt);如果c:myletter目录中没有名字为letter.txt文件,文件 对象f调用方法:public boolean createNewFile()可以在c:myletter目录中建立一个名字为letter.txt的文 件。文件对象调用方法 public boolean delete()可以删除当前文件,例如:f.delete();,在下面的例子1中,列出C:/1000目录下扩展名是.java文件的名字以及它们的大小,并删除了C:/1000中的一个.java文件。,4运行可执行文件 当要执行一个本地机上的可执行文件时,
8、可以使用java.lang包中的Runtime类。首先使用Runtime 类声明一个对象,如:Runtime ec;然后使用该类的静态getRuntime()方法创建这个对象:ec=Runtime.getRuntime();ec可以调用exec(String command)方法打开本地机的可执行文件或执行一个操作。下面的例子2中,Runtime对象打开windows平台上的绘图程序和记事本程序。,返回,9.2 文件字节流,1FileInputStream类 FileInputStream类是InputStream的子类,称为文件字节输入流。文件字节输入流按字节读取文件中的数据。该类的所有方法
9、都是从InputStream类继承来的。为了创建FileInputStream类的对象,可以使用下列构造方法:FileInputStream(String name)FileInputStream(File file)第一个构造方法使用给定的文件名name创建一个FileInputStream对象。第二个构造器使用File对象创建FileInputStream对象。构造方法参数指定的文件称作输入流的源,输入流通过使用read()方法从输入流读出源中的数据。,当您使用文件输入流构造器建立通往文件的输入流时,可能会出现错误(也被称为异常)。例如,当您试图要打开的文件不存在,就出现I/O错误,Jav
10、a生成一个出错信号,它使用一个IOException对象来表示这个出错信号。程序必须使用一个try-catch块检测并处理这个异常。输入流的唯一目的是提供通往数据的通道,程序可以通过这个通道读取数据,read方法给程序提供一个从输入流中读取数据的基本方法。read方法的格式如下:int read();read方法从输入流中顺序读取单个字节的数据。该方法返回字节值(0255之间的一个整数),读取位置到达文件末尾,则返回-1。,read方法还有其它一些形式。这些形式能使程序把多个字节读到一个字节数组中:int read(byte b);int read(byte b,int off,int len
11、);其中,off参数指定read方法把数据存放在字节数组b中的什么地方样,len参数指定该方法将读取的最大字节数。上面所示的这两个read方法都返回实际读取的字节个数,如果它们到达输入流的末尾,则返回-1。FileInputStream流顺序地读取文件,只要不关闭流,每次调用read方法就顺序地读取文件中其余的内容,直到文件的末尾或流被关闭。,2FileOutputStream类 与FileInputStream类相对应的类是FileOutputStream类。FileOutputStream提供了基本的文件写入能力。FileOutputStream类是OutputStream的子类,称为文件
12、字节输出流。文件字节输出流按字节将数据写入到文件中。为了创建FileOutputStream类的对象,可以使用下列构造方法:FileOutputStream(String name)FileOutputStream(File file)第一个构造方法使用给定的文件名name创建一个FileOutputStream对象。第二个构造方法使用File对象创建FileOutputStream对象。构造方法参数指定的文件称作输出流的目的地,输出流通过使用write()方法把数据写入输出流到达目的地。,FileOutputStream对象可以使用write方法把字节发送给输出流,write的用法如下:pu
13、blic void write(byte b)写b.length个字节到输出流。public void.write(byte b,int off,int len)从给定字节数组中起始于偏移量off处写len个字节到输出流,参数b是存放了数据的字节数组。FileOutStream流顺序地写文件,只要不关闭流,每次调用writer方法就顺序地向文件写入内容,直到流被关闭。如果输出流要写入数据的文件已经存在,该文件中的数据内容就会被刷新;如果要写入数据的文件不存在,该文件就会被建立。在下面的例子3中,首先将“欢迎Welcome”写入到“hello.txt”中,然后再读取该文件中的内容。,返回,9.3
14、 文件字符流,1FileReader类 为了创建FileReader类的对象,可以使用下列构造方法:FileReader(String name)FileReader(File file)第一个构造方法使用给定的文件名name创建一个FileReader 对象。第二个构造方法使用File对象创建FileReader对象。构造方法参数指定的文件称作输入流的源,输入流通过使用read()方法从输入流读出源中的数据。以下是read方法的功能解释:,int read()输入流调用该方法从源中读取一个字符,该方法返回一个整数(065535之间的一个整数,Unicode字符值),如果未读出字符就返回-1。
15、int read(char b)输入流调用该方法从源中读取b.length个字符到字符数组b中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。int read(char b,int off,int len)输入流调用该方法从源中读取len个字符并存放到字符数组b中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。其中,off参数指定read方法从符数组b中的什么地方存放数据,2FileWriter类 FileWriter提供了基本的文件写入能力。FileWriter类是Writer的子类,称为文件字符输出流。文件字符输出流按字符将数据写入到文件中。为了创建FileWriter
16、类的对象,可以使用下列构造方法:FileWriter(String name)FileWriter(File file)第一个构造方法使用给定的文件名name创建一个FileWriter对象。第二个构造方法使用File对象创建FileWriter对象。构造方法参数指定的文件称作输出流的目的地,输出流通过使用write()方法把字符数据写入输出流到达目的地。,FileWriter对象可以使用write方法把字符数据写入输出流,write的用法如下:public void write(char b)写b.length个字符到输出流。public void.write(char b,int off,
17、int len)从给定字符数组中起始于偏移量off处写len个字符到输出流,参数b是存放了数据的字符数组。void write(String str)把字符串中的全部字符写入到输出流。void write(String str,int off,int len)从字符串str中起始于偏移量off处写len个字符到输出流。,在下面的例子4中,首先用字符输出流向一个文件写入若干个字符,然后再用字符输入流读出文件中的内容。,返回,9.4 从键盘读取数据,java.lang包中的System类有两个重要的类成员:in和out,分别是输入流和输出流类型的对象。in的源是键盘,in可以读取用户从键盘键入的数
18、据。Scanner是JDK1.5新增的一个类,该类可以使用in初始化一个对象:Scanner reader=new Scanner(System.in);然后reader对象调用方法,读取用户在命令行输入的各种数据类型。out流的目的地是命令行窗口,out调用方法可以将数据送到命令行窗口。有关in和out的讲解可参见第2章,4节。,返回,9.5 缓冲流,1BufferedReader类 BufferedReader类创建的对象称为缓冲输入流,该输入流的指向必须是一个Reader流,称作BufferedReader流的底层流,底层流负责将数据读入缓冲区,BufferedReader流的源就是这个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 教案

链接地址:https://www.31ppt.com/p-6592971.html