Java大学实用教程.ppt
《Java大学实用教程.ppt》由会员分享,可在线阅读,更多相关《Java大学实用教程.ppt(31页珍藏版)》请在三一办公上搜索。
1、第九章 输入、输出流,本章导读 文件 文件字节流和文件字符流 缓冲流 数组流和字符串流 数据流 对象流 序列化和对象克隆 随机读写流 使用Scanner类解析文件 文件锁,1,输入流、输出流概述,I/O流提供一条通道程序,可以使用这条通道读取“源”中的数据,或把数据送到“目的地”。I/O流中的输入流的指向称为源,程序从指向源的输入流中读取源中的数据(如图9.1所示意);输出流的指向称为目的地,程序通过向输出流中写入数据把信息传递到目的地(如图9.2所示意)。程序的源和目的地也可以是键盘、鼠标、内存或显示器窗口。,2,I/O流库提供的4个重要的abstract类,Java的I/O流库提供大量的流
2、类(在包java.io中),其中有4个重要的abstract类:InputStream字节输入流 Reader 字符输入流 OutputStream 字节输出流 Writer字符输出流 InputStream和Reader类为其子类提供了重要的读取数据的read()方法.OutputStream和Writer类为其子类提供了重要的写入数据的write()方法。,3,9.1 文件,多流的读写与文件有关。Java使用File类创建的对象来获取文件本身的一些信息,如文件所在的目录、文件的长度、文件读写权限等,文件对象并不涉及对文件的读写操作。创建一个File对象的构造方法有3个:File(Strin
3、g filename);File(String directoryPath,String filename);File(File f,String filename);其中filename是文件名字,directoryPath是文件的路径,f是一个目录。使用File(String filename)创建文件时,该文件被认为是与当前应用程序在同一目录中。,4,1文件的属性,使用File类的下列方法可以获取文件本身的一些信息:public String getName()获取文件的名字。public boolean canRead()判断文件是否是可读的。public boolean canWri
4、te()判断文件是否可被写入。public boolean exits()判断文件是否存在。public long length()获取文件的长度(单位是字节)。public String getAbsolutePath()获取文件的绝对路径。public String getParent()获取文件的父目录。public boolean isFile()判断文件是否是一个正常文件,而不是目录。public boolean isDirectroy()判断文件是否是一个目录。public boolean isHidden()判断文件是否是隐藏文件。public long lastModified
5、()获取文件最后修改的时间(时间是从1970年午夜至文件最后修改时刻的毫秒数。,5,2目录,1)创建目录 public boolean mkdir()创建一个目录,创建成功返回true,否则返回false。2)列出目录中的文件(如果File对象是一个目录)public String list()用字符串形式返回目录下的全部文件。public File listFiles()用File对象形式返回目录下的全部文件。File类的下述两个方法可以列出指定类型的文件:public String list(FilenameFilter obj)该方法用字符串形式返回目录下的指定类型的所有文件。publi
6、c File listFiles(FilenameFilter obj)该方法用File对象返回目录下的指定类型所有文件。FilenameFilter是一个接口,该接口有一个方法:public boolean accept(File dir,String name);使用list()方法时,需向该方法传递一个实现FilenameFilter接口的对象。list()方法执行时,参数不断回调接口方法accept(File dir,String name),参数name被实例化目录中的一个文件名,参数dir为调用list的当前对象,当接口方法返回true时,list()方法就将目录dir中的文件存放
7、到返回的数组中。,6,3文件的创建与删除,对于 File f=new File(C:myletter,letter.txt);如果C:myletter目录中没有名字为letter.txt的文件,文件对象f调用方法 public boolean createNewFile()可以在C:myletter目录中建立一个名字为letter.txt的文件。文件对象调用方法 public boolean delete()可以删除当前文件,如 f.delete();例9-1列出了D:ch9目录下java源文件的名字及其大小,并删除了D:ch9中的一个java源文件。,7,4运行可执行文件,使用java.la
8、ng包中的Runtime类,执行一个本地机上的可执行文件。首先使用Runtime类声明一个对象,如 Runtime ec;然后使用该类的静态getRuntime()方法创建这个对象:ec=Runtime.getRuntime();ec可以调用exec(String command)方法打开本地的可执行文件或执行一个操作。例9-2中,Runtime对象打开Windows平台上的绘图程序和记事本程序。,8,9.2 文件字节流,1FileInputStream类 FileInputStream类是InputStream的子类,称为文件字节输入流,按字节读取文件中的数据。该类的所有方法都是从Input
9、Stream类继承来的。构造方法:FileInputStream(String name)FileInputStream(File file)构造方法参数指定的文件称为输入流的源,输入流通过使用read()方法从输入流读出源中的数据。建立一个文件输入流对象,代码如下:try FileInputStream ins=new FileInputStream(myfile.dat);catch(IOException e)System.out.println(e);read()方法的形式:int read();从输入流中顺序读取单个字节的数据 int read(byte b)和int read(by
10、te b,int off,int len)把多个字节读到一个字节数组中,返回实际读取的字节个数。参数off指定read()方法把数据存放在字节数组b中的位置,参数len指定该方法将读取的最大字节数。FileInputStream流顺序地读取文件,只要不关闭流,每次调用read()方法就顺序地读取文件中其余的内容,直到文件的末尾或流被关闭。,9,2FileOutputStream类,FileOutputStream提供了基本的文件写入能力,是OutputStream的子类,称为文件字节输出流。文件字节输出流按字节将数据写入到文件中.构造方法:FileOutputStream(String nam
11、e)FileOutputStream(File file)FileOutputStream(String name,boolean append)FileOutputStream(File file,boolean append)构造方法参数指定的文件称为输出流的目的地。输出流使用write()方法把数据写入输出流到达目的地。public void write(byte b)写b.length个字节到输出流。public void.write(byte b,int off,int len)从给定字节数组中起始于偏移量off处写len个字节到输出流,参数b是存放了数据的字节数组。只要不关闭流,每
12、次调用writer()方法就顺序地向文件写入内容,直到流被关闭 例9-3中,首先将“欢迎welcom”写入到文件“hello.txt”中,然后再读取该文件中的内容。,10,9.3 文件字符流,1FileReader类 FileReader类是Reader的子类,称为文件字符输入流。文件字符输入流按字符读取文件中的数据。构造方法:FileReader(String name)FileReader(File file)构造方法参数指定的文件称为输入流的源,输入流通过使用read()方法从输入流读出源中的数据。int read()输入流调用该方法从源中读取一个字符。该方法返回一个整数(065535之
13、间的一个整数,Unicode字符值),如果未读出字符就返回1。int read(char b)输入流调用该方法从源中读取b.length个字符到字符数组b中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。int read(char b,int off,int len)输入流调用该方法从源中读取len个字符并存放到字符数组b中,返回实际读取的字符数目。如果到达文件的末尾,则返回-1。其中,参数off指定该方法从字符数组b中的什么地方存放数据。,11,2FileWriter类,FileWriter提供了基本的文件写入能力。FileWriter类是Writer的子类,称为文件字符输出流。文
14、件字符输出流按字符将数据写入到文件中.构造方法:FileWriter(String name);FileWriter(File file);FileWriter(String name,boolean append);FileWriter(File file,boolean append);构造方法参数指定的文件称为输出流的目的地。输出流使用write()方法把数据写入输出流到达目的地。public void write(char b)写b.length个字符到输出流 public void.write(char b,int off,int len)从给定字符数组中起始于偏移量off处写len
15、个字符到输出流,参数b是存放了数据的字符数组 void write(String str)把字符串中的全部字符写入到输出流 void write(String str,int off,int len)从字符串str中起始于偏移量off处写len个字符到输出流 只要不关闭流,每次调用writer()方法就顺序地向文件写入内容,直到流被关闭 例9-4首先用字符输出流向一个已经存在的文件尾加若干个字符,然后再用字符输入流读出文件中的内容。,12,9.4 缓冲流(教材印刷错误9.5),1BufferedReader类 BufferedReader类创建的对象称为缓冲输入流,该输入流的指向必须是一个Re
16、ader流,称为BufferedReader流的底层流,底层流负责将数据读入缓冲区。BufferedReader流的源就是这个缓冲区,缓冲输入流再从缓冲区中读取数据。可以将BufferedReader与FileReader连接,然后BufferedReader就可以按行读FileReader指向的文件。BufferedReader的构造方法如下:BufferedReader(Reader in)BufferedReader流能够读取文本行,方法是 readLine()可以向BufferedReader传递一个Reader对象(如FileReader的实例)来创建一个BufferedReader
17、对象:FileReader inOne=new FileReader(Student.txt)BufferedReader inTwo=new BufferedReader(inOne);然后inTwo调用readLine()顺序读取文件“Student.txt”的一行。,13,2BufferedWriter类,可以将BufferedWriter流和FileWriter流连接在一起,然后使用BufferedWriter流将数据写到目的地。FileWriter流称为BufferedWriter的底层流,BufferedWriter流将数据写入缓冲区,底层流负责将数据写到最终的目的地。例如,Fil
18、eWriter tofile=new FileWriter(hello.txt);BufferedWriter out=new BufferedWriter(tofile);BufferedReader流调用方法:write(String str)write(String s,int off,int len)把字符串s或s的一部分写入到目的地。BufferedWriter调用newLine()方法,可以向文件写入一个回行,调用flush()可以刷新缓冲区。例9-5将文件“Student.txt”中的内容按行读出,并写入到另一个文件中,且给每一行加上行号,14,3标准化考试,标准化试题文件的格式
19、要求如下:每道题目之间用一个或多个星号(*)字符分隔(最后一个题目的最后一行也是*)。每道题目提供A、B、C、D四个选择(单项选择)。test.txt是一套标准化考试的试题文件。例9-6使用输入流读取试题文件,每次显示试题文件中的一道题目。当读取到字符*时,暂停读取,等待用户从键盘输入答案。用户做完全部题目后,程序给出用户的得分。程序运行效果如图9.3。,15,9.5 数组流(教材印刷错误9.6),流的源和目标除了可以是文件外,还可以是计算机内存。ByteArrayInputStream和字节输出流ByteArrayOutputStream分别使用字节数组作为流的源和目标。数组字节输入流 By
20、teArrayInputStream构造方法如下 ByteArrayInputStream(byte buf)ByteArrayInputStream(byte buf,int offset,int length)数组字节输入流调用 public int read()顺序地从源中读出一个字节,该方法返回读出的字节值 public int read(byte b,int off,int len)顺序地从源中读出参数len指定的字节数,并将读出的字节存放到参数b指定的数组中,参数off指定数组b存放读出字节的起始位置,该方法返回实际读出的字节个数。如果未读出字节read方法返回-1。数组字节输出流
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 大学 实用教程
链接地址:https://www.31ppt.com/p-5436071.html