javappt教学课件-第八章 文件与流

上传人:aa****6 文档编号:54258279 上传时间:2018-09-10 格式:PPT 页数:63 大小:706KB
返回 下载 相关 举报
javappt教学课件-第八章 文件与流_第1页
第1页 / 共63页
javappt教学课件-第八章 文件与流_第2页
第2页 / 共63页
javappt教学课件-第八章 文件与流_第3页
第3页 / 共63页
javappt教学课件-第八章 文件与流_第4页
第4页 / 共63页
javappt教学课件-第八章 文件与流_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《javappt教学课件-第八章 文件与流》由会员分享,可在线阅读,更多相关《javappt教学课件-第八章 文件与流(63页珍藏版)》请在金锄头文库上搜索。

1、Java275 文件与流,东软IT人才实训中心,课程结构,课程结构(续),第十三章 文件与流,学时:5学时教学方法:讲授ppt上机练习,目标:Java文件管理及File类的使用。流的概念及API。字节流与字符流的使用。标准I/O设备操作。,文件与输入/输出处理,学习目标: 文件的操作 文件的输入输出 java.io包的使用,文件与输入/输出处理,1.java.io包简介要在Java程序中处理输入输出的动作,就必须先认识java.io包。IO是Input/Output的缩写,顾名思义,除了标准输入输出外,其他所有输入输出的动作,都必须依靠这个包中的类来完成,所以我们就先来认识一下这个包,了解一下

2、Java对输出入处理的架构!,文件与输入/输出处理,Stream“Stream”,中文翻译为”流”。在java.io包中就是以这样的概念来处理数据的输入输出的,”InputStream”和”OutputStream”是所有输出入相关类的父类。在Java中对于Stream还有额外的定义,就是Stream对于数据的传送是以”byte”为单位的,可是有时候我们需要以字符(character)为单位来传送数据,这时就要改用”Reader”和”Writer”这两个类或其他类,来处理字符的数据。,文件与输入/输出处理,所以java.io包中有两大继承体系:一个是以byte处理为主的Stream类,他们的命

3、名方式都是以XXXXStream;另一个继承体系是以字符处理为主的Reader/Writer类,他们的命名方式都是以XXXXReader或XXXXWriter。InputStream,OutputStream,Reader,Writer这四个类,正是这两大继承体系的父类。,文件与输入/输出处理,NodeNode称为节点,一个流会有一个节点。如果这个流是数据输入用的,则这个流的一端为数据源(source)的节点,另一端就是程序中处理的程序代码;如果这个流是数据输出用的,则这个流的一端为程序中处理的程序代码,另一端为数据目的地(sink)的节点。,文件与输入/输出处理,流与节点示意图,数据输入流,

4、数据输出流,数据来源(source),程序,数据目的地(sink),程序,文件与输入/输出处理,在java.io包中:字节继承体系有三种节点类; 而字符继承体系有四种节点类。注: 这些节点类跟数据源或数据目的地做直接连接用的,包中其他类没有这种功能。简单说,节点类是第一线的类,所有输入输出的动作都必须依靠它们来完成,至于其他的类则看程序需要了。,文件与输入/输出处理,节点类,文件与输入/输出处理,方法使用1.InputStream类 InputStream是输入字节数据用的类。int read() 这个方法没有参数,一次读取一个byte的数据,并以int类型把数据返回来,如果没有数据可以读了,

5、会返回”-1”。 int read(byte b) 这个方法有一个byte数据类型的参数,这个方法会把所读取到的数据放在这个byte数组中,返回一个int型的数据,这个int型数据存储了返回的真正读取到的数据byte数; int read(byte b, int off, int len) 将输入流中最多 len 个数据字节读入字节,返回值同上,文件与输入/输出处理,void close() 关闭此输入流并释放与该流关联的所有系统资源。 int available() 获取这个流中还有多少个byte的数据可以读取。返回值告诉我们还有多少个byte的数据可以读取。 注:这个方法会产生IOExce

6、ption异常,另外如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有作用。 long skip(long n) 跳过和放弃此输入流中的 n 个数据字节。返回值返回真正跳过的字节数。,文件与输入/输出处理,void mark(int readlimit) 在此输入流中标记当前的位置。 注:mark方法对于InputStream对象也没有什么作用,只有子类才能正常地调用它。 void reset() 将此流重新定位到对此输入流最后调用 mark 方法时的位置。 boolean markSupported() mark和res

7、et方法并不是每种InputStream都能够使用,所以用markSupported方法测试此输入流是否支持 mark 和 reset 方法。,文件与输入/输出处理,2.OutputStream OutputStream是输出字节数据用的类。void write(byte b) 将要输出的数组先放在一个byte数组中,然后用这个方法一次把一组数据输出出去。 void write(byte b, int off, int len) 将指定字节数组中从偏移量 off 开始的 len 个字节写入此输出流。 void write(int b) 将要输出的byte数据传给这个方法就可。,文件与输入/输出

8、处理,注:使用write方法输出数据时,有些数据并不会马上输出到我们指定的目的,通常会在内存中有个暂存区,有些输出的数据会暂时存放在这里,如果我们想要立刻把数据输出到目的地,不要放在暂存区中时,可以调用”flush”这个方法来对暂存区做清除的动作。同样,数据输出完后,记得把它”close”,在调用close这个方法时,会先调用flush这个方法,以确保所有的数据都已经输出到目的地了。,文件与输入/输出处理,void close() 关闭此输出流并释放与此流有关的所有系统资源。 void flush() 刷新此输出流并强制写出所有缓冲的输出字节。,文件与输入/输出处理,3.Reader Read

9、er是输入字符数据用的类,它所提供的方法和InputStream类一样,差别在于InputStream类中用的是byte类型,而Reader类中用的是char类型。注: Reader类中没有available方法,取而代之的是”ready”方法,这个方法会去检查Reader对象是否已经准备好输入数据了,如果是返回true,反之返回false。,文件与输入/输出处理,4.Writer Writer类是输出字符数据的类,同样地,提供的方法和OutputStream类中的方法类似,将OutputStream类中用到的byte类型,换成char类型就可。注: Writer类另外提供了两个writer方

10、法,所以Writer类有5个writer方法,多出来的两个只是把char数据换成String对象而已,方便输出字符的数据。,文件与输入/输出处理,文件处理两部分: 1.文件的操作 2.文件的访问,文件与输入/输出处理,1.文件的操作这里的文件操作针对的是文件或是目录的管理,并没有访问动作;而操作指的是取得一些文件的信息,文件的检查,文件的删除等。,文件与输入/输出处理,a.构造File对象File类构造函数: File(String pathname) 通过将给定路径名字符串转换成抽象路径名来创建一个新 File 实例。 例: File f1 = new File(“c:tempabc.txt

11、”); File f2 = new File(“abc.txt”);注: 字符串中使用”符号,因为”符号属于转义字符,所以在字符串中要使用真正的”符号,需要连续输入两个”。,文件与输入/输出处理,注:上例中”是Windows系统中才有的目录分隔符,在linux系统中目录分隔符是”/”.Java的程序最重要的特色是跨平台,所以如果上例的话只能在Windows系统下执行了。,文件与输入/输出处理,使用System类中的方法来取得系统参数:System.getProperty(“os.name”); 取得当前系统名称;System.getProperty(“user.dir”); 取得程序现在执行的

12、目录;,文件与输入/输出处理,通过File类提供的常量来取得目录的分隔符号:static String pathSeparator 与系统有关的路径分隔符字符,出于方便考虑,它被表示为一个字符串。 static char pathSeparatorChar 与系统有关的默认路径分隔符字符。 static String separator 与系统有关的默认目录分隔符,出于方便考虑,它被表示为一个字符串。 static char separatorChar 与系统有关的默认目录分隔符。,文件与输入/输出处理,File类的另外两个构造函数:File(String parent, String chi

13、ld) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 例:File f3 = new File(“c:temp”); File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例 例:File f4 = new File(f3,”abc.txt”);,文件与输入/输出处理,File对象的使用File对象的方法有几十个,有的是针对文件的处理,有的是针对目录的处理,当然也有些方法是公用的,包括下面方法:,文件与输入/输出处理,boolean canRead() 测试应

14、用程序是否可以读取此抽象路径名表示的文件。 boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。 int compareTo(File pathname) 按字母顺序比较两个抽象路径名。 boolean createNewFile() 当且仅当不存在具有此抽象路径名指定的名称的文件时,原子地创建由此抽象路径名指定的一个新的空文件。,文件与输入/输出处理,static File createTempFile(String prefix, String suffix) 在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。static File cre

15、ateTempFile(String prefix, String suffix, File directory) 在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。,文件与输入/输出处理,boolean delete() 删除此抽象路径名表示的文件或目录。 void deleteOnExit() 在整个程序结束时,请求删除此抽象路径名表示的文件或目录。booleanexists() 测试此抽象路径名表示的文件或目录是否存在。String getAbsolutePath() 返回抽象路径名的绝对路径名字符串。,文件与输入/输出处理,String getName() 返回由此

16、抽象路径名表示的文件或目录的名称,不包括路径名称。String getParent() 返回此抽象路径名的父路径名的路径名字符串,如果此路径名没有指定父目录,则返回 null。String getPath() 将此抽象路径名转换为一个路径名字符串。,文件与输入/输出处理,boolean isAbsolute() 测试此抽象路径名是否为绝对路径名boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。,文件与输入/输出处理,long lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间。 long length() 返回由此抽象路径名表示的文件的大小,以byte为单位。String list() 返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号