Java程序设计 教学课件 ppt 作者 孙燕 等 9

上传人:E**** 文档编号:89389314 上传时间:2019-05-24 格式:PPT 页数:27 大小:854.50KB
返回 下载 相关 举报
Java程序设计 教学课件 ppt 作者 孙燕 等 9_第1页
第1页 / 共27页
Java程序设计 教学课件 ppt 作者 孙燕 等 9_第2页
第2页 / 共27页
Java程序设计 教学课件 ppt 作者 孙燕 等 9_第3页
第3页 / 共27页
Java程序设计 教学课件 ppt 作者 孙燕 等 9_第4页
第4页 / 共27页
Java程序设计 教学课件 ppt 作者 孙燕 等 9_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《Java程序设计 教学课件 ppt 作者 孙燕 等 9》由会员分享,可在线阅读,更多相关《Java程序设计 教学课件 ppt 作者 孙燕 等 9(27页珍藏版)》请在金锄头文库上搜索。

1、第9章 文件管理,2,本章主要内容,输入输出流的概念 流的概念、Java中包含的输入/输出的流 Java文件和目录管理 生成文件对象、文件名处理、设置文件属性、文件操作方法 文件的顺序和随机访问 文件的顺序访问、文件的随机访问 Java中的流 字节流、字符流、过滤流、管道流 、顺序输入流 对象串行化,3,本章重点和难点,重点 输入输出流的概念 文件的访问 对象串行化 难点 文件的随机访问 文件的顺序访问 字节流和字符流,4,输入输出概述,Java的输入输出功能必须借助于输入输出类库java.io包来实现,这个包中的类大部分是用来完成流式输入输出的流类。 流的概念 流是指计算机的输入与输出之间运

2、动的数据的序列 输入流代表从外设流入计算机的数据系列 输出流代表从计算机流向外设的数据序列,5,Java中包含的输入/输出的流,Java中的输入输出流分两类 输入流和输出流 输入流是能够读取字节的对象,而输出流是能够写字节序列的对象 最初设计的输入输出类是面向字节流的,即能够支持8位的字节流,分别由派生自抽象类InputStream和OutputStream的类层次来表示 但是随着对国际化支持的需求出现,面向字节的流不能很好地处理使用Unicode(每个字符使用两个字节)的数据,因此引入了派生自抽象类Reader和Writer的类层次,用于读写双字节的Unicode字符,而不是单字节字符,6,

3、Java输入输出类库继承关系,7,流的分类,InputStream和OutputStream是所有输入输出流的祖先,它们是一个抽象类,System.in和System.out是它们的子类,8,流的分类,InputStream中的基本方法包括:read, available, mark, skip, reset, markSuppposed, close OutputStream中的基本方法包括:write, flush, close,9,字符输入输出类层次关系图,10,Java文件和目录管理,对于文件或目录的其他操作,如重命名、删除、列表显示等,需要使用Java的文件管理File类 在Java

4、中,文件和目录都是用File对象来表示的,创建和区分方法如下 先创建一个File对象,并指定文件名或目录名,若指定文件名或目录名不存在,则File对象的新建并不会创建一个文件或目录 需要用createNewFile方法或mkdir方法来分别创建文件或目录 区分File对象代表的是文件还是目录,可以通过isFile方法和isDirectory方法来判断,11,Java文件和目录管理,生成文件对象 public File(String pathName); public File(String parent, String child); public File(File parent, Stri

5、ng child); File fp=new File(“tempfile.txt”); 对文件操作要定义文件流 FileInputStream类用来打开一个输入文件 FileOutputStream类用来打开一个输出文件,12,文件名的处理,文件名的处理 String getName();/获得文件的名称,不包含文件所在的路径 String getPath();/获得文件的路径 String getAbsolutePath();/获得文件的绝对路径 String getParent();/获得文件的上一级目录的名称 String renameTo(File newName);/按照参数中给定

6、的完整路径更改当前的文件名 int compareTo(File pathName);/按照字典顺序比较两个文件对象的路径 boolean isAbsolute();/测试文件对象的路径是不是绝对路径,13,测试和设置文件属性,测试和设置文件的属性 boolean exists();/测试当前文件对象指示的文件是否存在 boolean isFile();/测试当前文件对象是不是文件 boolean isDirectory();/测试当前文件对象是不是目录 boolean canRead();/测试当前文件对象是否可读 boolean canWrite();/测试当前文件对象是否可写 boole

7、an setReadOnly();/将当前文件设置为只读 long length();/获得当前文件对象的长度,14,文件操作方法,文件操作方法 boolean createNewFile();/根据当前的文件对象创建一个新的文件 boolean mkdir();/根据当前的文件对象生成一个目录,也就是指定路径下的文件夹 boolean mkdirs();/也是根据当前的文件对象生成一个目录,不同的地方在于该方法即使创建目录失败,也会成功创建参数中指定的所有父目录。 boolean delete();/删除当前的文件 void deleteOnExit();/当前Java虚拟机终止时删除当前的

8、文件 String list();/列出当前目录下的文件,15,文件的顺序和随机访问,文件的顺序和随机访问 文件是保存在磁盘等二级存储设备上的数据,由记录组成,文件中的一行可以看作是一条记录。 对文件的读写和标准输入输出是十分类似的,需要注意的是要采用专门对文件操作的流,并应该在合适的时候关闭流,否则系统资源无法得到释放。 对于输出流,如果不执行关闭流的操作,则缓冲区的数据将有可能没有写入文件,造成文件损坏。,16,文件的顺序访问,类FileInputStream和FileOutputStream用来进行文件I/O处理 文件流的建立 FileInputStream in=new FileInp

9、utStream(fp); FileOutputStream out=new FileOutputStream(fp); 输入流的参数是用于输入的文件名 输出流的参数是用于输出的文件名,17,文件的随机访问,类RandomAccessFile 提供了随机访问文件的支持,该类实现了DataInput和DataOutput接口 创建一个随机文件 new RandomAccessFile(“file1.txt”, “r”); new RandomAccessFile(“file2.txt”, “rw”); 随机文件可以同时完成读和写操作,18,支持随机文件操作的方法,操作方法 readXXX()或w

10、riteXXX() skipBytes(); 将指针乡下移动若干字节 seek(): 将指针调到所需位置 getFilePointer(): 返回指针当前位置 length(): 返回文件长度 利用seek(long pos)方法查找随机文件中的信息,19,字节流和字符流处理,字节流和字符流的处理 Java中所有的字节输入流都继承于InputStream类 Java中所有的字节输出流都继承于OutPutStream类 Reader和Writer是两个抽象类,Java中专门用于字符流处理的类都是Reader和Writer类的子类 Java中用于字符流处理的最基本的类是InputStreamRea

11、der和OutputStreamWriter,20,过滤流,BufferedInputStream和BufferedOutputStream 将它们与文件流相接 FileInputStream in=new FileInputStream(“file1.txt”); BufferedInputStream bin= new BufferedInputStream(in,256) int len; byte bArray=new byte256; len=bin.read(bArray); len中得到是长度, bArray中得到的是数据 DataInputStream和DataOutputSt

12、ream 这两个类不仅能读写数据流,而且能读写各种各样的Java语言本身固有的数据类型,如int、float等。 PushbackInputStream PushbackInputStream类提供了方法将刚读过的字节退回到输入流中,21,带缓冲的过滤流,BufferedInputStream和BufferedOutputStream 增加缓冲区流,减少访问硬盘的次数,提高效率,22,带缓冲的过滤流,只有缓冲区满时,才将数据送到输出流 Java在输出数据流中,当对方尚未将数据取走时,程序就会被阻塞 有时要人为地将尚未填满的缓冲区中的数据送出,使用flush()方法,23,管道流,管道是用来将一

13、个程序、线程、代码块的输出连接到另一个程序、线程和代码块的输入。管道流一定是输入输出并用 PipedInputStream(PipedOutputStream srcStream); PipedOutputStream(PipedInputStream desStream); 创建管道流 PipedInputStream pis=new PipedInputStream(); PipedOutputStream pos=new PipedOutputStream(pis); PipedOutputStream pos=new PipedOutputStream(); PipedInputStr

14、eam pis=new PipedInputStream(pos);,24,对象串行化,对象串行化的概念 对象通过写出描述自己状态的数值来记录自己,这个过程叫做对象的串行化。 在java.io包中,接口Serializable是实现对象串行化的工具,只有实现了Serializable的类的对象才可以被串行化。 Serializable接口中没有任何的方法,当一个类声明实现Serializable接口时,只是表明该类遵循串行化协议,而不需要实现任何特殊的方法。,25,对象串行化,对象串行化的示例 public class Student implements Serializable int i

15、d;String name; int age; String department; public Student(int id, String name,int age, String department) this.id=id; this.name=name; this.age=age; this.department =departmernt; ,26,对象流,构造对象的输入输出流(将对象保存到文件中,或者通过网络传送到其他地方) 相应的类:ObjectInput 对象的输出:ObjectOutputStream 相应的方法:writeObject() 对象的输入:ObjectInputStream 相应的方法:readObject(),27,对象流与对象串行化,对象的持续性 能够纪录自己的状态一边将来再生的能力,叫对象的持续性 对象流 能够输入输出对象的流 对象流与对象串行化 将串行化的对象通过对象输入输出流写入文件或传送到其它地方,

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

当前位置:首页 > 高等教育 > 大学课件

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