第8章文件和输入输出流.ppt

上传人:本田雅阁 文档编号:2980727 上传时间:2019-06-17 格式:PPT 页数:45 大小:325.51KB
返回 下载 相关 举报
第8章文件和输入输出流.ppt_第1页
第1页 / 共45页
第8章文件和输入输出流.ppt_第2页
第2页 / 共45页
第8章文件和输入输出流.ppt_第3页
第3页 / 共45页
第8章文件和输入输出流.ppt_第4页
第4页 / 共45页
第8章文件和输入输出流.ppt_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《第8章文件和输入输出流.ppt》由会员分享,可在线阅读,更多相关《第8章文件和输入输出流.ppt(45页珍藏版)》请在三一文库上搜索。

1、第8章 文件和输入输出流,本章主要内容:,8.1 输入/输出流 8.1.1 流的概念 8.1.2 io类库 8.2 文件处理 8.2.1 文件与目录管理 8.2.2 文件流 8.3 随机存取文件和本地可执行文件 8.3.1 随机存取文件流 8.3.2 本地可执行文件 8.4 数据流与对象流 8.4.1 数据流 8.4.2 对象流 8.5 Java多媒体技术 8.5.1 应用输入流播放音频文件 8.5.2 Java多媒体包JMF的应用,文件,程序,终端,文件,程序,网络端点,数据流,起点,终点,网络端点,文件,字符串 存储区,8.1 输入/输出流,什么是数据流 ? 流是可被顺序访问的无限长的字符

2、序列。,8.1.1 流的概念,8.1.2 io类库,I/O流,字节流,字符流,8.1.2 io类库,1、字节流的层次结构,8.1.2 io类库,2、字符流的层次结构,8.1.2 io类库,2、字符流的层次结构,8.2 文件处理,1、File类 2、字符文件: FileReader类、 FileWriter类 3、字节文件: FileInput类、FileOutput类,定义在包java.io中,8.2.1 文件与目录管理,1、创建File类文件对象 (1)所有对文件的操作都要使用File类. (2)其构造: File(“文件名”); File(“文件所在目录”,“文件名”);,文件与应用程序不

3、在同一目录,文件与应用程序在同一目录,8.2.1 文件与目录管理,2、获取文件及目录属性 (1)判断文件或目录是否存在 public boolean exists( ) ; (2)判断是文件还是目录 public boolean isFile( ); public boolean isDirectory( ); (3)获取文件或目录名称与路径 public String getName( ); 返回文件名或目录名。 public String getPath( ); 返回文件或目录的路径。,8.2.1 文件与目录管理,(4)获取文件的长度 public long length( ); (5)获

4、取文件读写属性 public boolean canRead( ); public boolean canWrite( ); (6)列出目录中的文件 public String list ( ); (7)比较两个文件或目录 public boolean equals( File f );,8.2.1 文件与目录管理,3、文件及目录操作 File类中还定义了一些对文件或目录进行管理、操作的方法,常用的方法有: (1)重命名文件 public boolean renameTo( File newFile ); (2)删除文件 public void delete( ); (3)创建目录 publi

5、c boolean mkdir( );,8.2.2 文件流,对文件进行输入输出处理的四个类: FileInputStream :字节文件输入流; FileOutputStream :字节文件输出流; FileReader :字符文件输入流; FileWriter :字符文件输出流。,8.2.2 文件流,1、字节文件输入流读取文件 (1)FileInputStream类 FileInputStream(String filename); FileInputStream(File file); FileInputStream( FileDescriptor fdObj); (2)从文件输入流中读取

6、字节 int read( ); int read( byte b ); int read( byte b ,int off, int len);,【例8-1】在下面的程序中,读取一个文本文件test.dat,并将其显示到对话框上。,在编写程序之前,我们至少需要知道两件事: (1)怎样把一个流与一个文件联系起来; (2)用什么方法把从文件中读取到的数据显示到一个对话框中。,8.2.2 文件流,2、字节文件输出流写入文件 (1)FileOutputStream类 FileOutputStream( String filename ) FileOutputStream( File file ) Fi

7、leOutputStream(FileDescriptor fdObj) (2)把字节发送到文件输出流 write(int b); write(byte b); write(byte b, int off, int len);,【例8-2】复制图像文件a.jpg,并且更名为b.jpg。,8.2.2 文件流,3、字符文件流读写文本文件 (1)FileReader和FileWriter FileReader( String filename ); FileReader( File file ); FileReader(FileDescriptor fdObj); FileWriter( Strin

8、g filename ); FileWriter( File file ); FileWriter(FileDescriptor fdObj);,8.2.2 文件流,3、字符文件流读写文本文件 (2)用字符流进行读写操作的方法 与字节输入输出流的功能一样,Reader和Writer只是建立一条通往字符文件的通道,而要实现对字符数据的读写操作,还需要读方法和写方法来完成。,8.2.2 文件流,从输入流中按行读取字符的方法: String readLine(); 向输出流写入多个字符的方法: write(String s, int off, int len); 将指定的字符串s从偏移量 off 开

9、始的 len 个字符写入文件输出流。 刷新BufferedWriter所建立的缓冲区,一次性将缓冲区中的数据写入文件的方法如下: flush();,【例8-3】将文件a.txt读取到文本区,经修改后,另存为b.txt。,8.3 随机存取文件和本地可执行文件,随机存取文件流RandomAccessFile类可以读写文件中任意位置上的字节、文本等数据。它有二个构造方法: (1)RandomAccessFile ( String filename, String mode ) (2)RandomAccessFile ( File file, String mode ),8.3.1 随机存取文件流,【

10、例8-4】用随机存取文件流读写文件。,1 /* 随机流 */ 2 import java.io.*; 3 class Example8_4 4 5 public static void main(String args) 6 7 try 8. RandomAccessFile f = new andomAccessFile(“a.txt“,“rw“); 9. f.writeBytes(“Zhang si ming“); 10. f.close(); 11. 12. catch(IOException e) 13. System.out.println(e); 14. 15. 16. ,【例8-

11、5】使用随机存取文件流RandomAccessFile实现一个英汉小词典程序。,8.3.2 本地可执行文件,在Java语言中,使用java.lang包中的Runtime类可以运行本地机的可执行文件。每个 Java 应用程序都有一个 Runtime 类实例对象,使应用程序能够与其运行的环境相连接。但应用程序不能创建自己的 Runtime 类实例对象,而要通过该类的静态方法getRuntime()创建Runtime 类对象。,8.3.2 本地可执行文件,Runtime 类对象有几个常用方法: (1)exit(int status) 通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。

12、(2)gc() 运行垃圾回收器。 (3)getRuntime() (4)exec(String command) 调用该方法可以在单独的进程中运行由字符串命令指定的本地机上的可执行文件。,【例8-6】使用Runtime 类对象运行例8-5。,1. public class Example8_6 2. public static void main(String args) 3. 4. try 5. Runtime rt=Runtime.getRuntime(); 6. rt.exec(“java Example8_5“); 7. 8. catch(Exception e) System.out

13、.println(e); 9. 10. ,【例8-7】调用Windows系统自带的计算器。,1. public class Example8_7 2. public static void main(String args) 3. 4. try 5. Runtime rt=Runtime.getRuntime(); 6. rt.exec(“c:/windows/system32/calc.exe“); 7. catch(Exception e) System.out.println(e); 8. 9. ,【例8-8】应用Runtime类设计一个Java语言简易编译器,该编译器具有编写源程序、编

14、译和运行程序的功能。,8.4 数据流与对象流,有许多应用程序需要将处理的数据作为Java的一种基本类型(如布尔型,字节,整数和浮点数)来使用。这就要用到数据流类DataInputStream类和DataOutputStream类。这两个数据流类是很有用处的,它们允许程序按机器无关的格式读取Java原始数据。,8.4.1 数据流,8.4.1 数据流,用下面的构造方法就可以建立DataInputStream类和DataOutputStream类的实例: public DataInputStream(InputStream in); public DataOutputStream(OutputStr

15、eam out);,8.4.1 数据流,【例8-9】应用DataInputStream类和DataOutputStream类复制声音文件。,8.4.2 对象流,Java可以将对象作为一个整体通过对象流进行传输和存储。 1、对象流的构造方法 ObjectInputStream类和ObjectOutputStream类的构造方法为: ObjectInputStream(InputStream in); ObjectOutputStream(OutputStream out);,【例8-10】编写程序,在窗体中实例化球面板对象,当单击“写入文件”按钮后,能将球面板对象写入到一个文件中。当单击“读取对

16、象”按钮后,再将该球面板对象从文件中取出,并在窗体中显示。,8.4.2 对象流,2、对象序列化 序列化是一个很重要的概念,当我们使用对象流写入或读出一个对象时,其前提是这个对象必须是序列化的。这是因为我们把一个对象写入到文件后,能再把这个对象正确地读回到程序中来。人们把将一个对象转化为适合传输或磁盘存储的数据流的过程称为对象序列化。 Java提供给我们的绝大多数类对象都是序列化对象,比如组件等。用户自己定义的类需要序列化时,必须实现Serializable接口。,【例8-11】编写一个简单的程序,保存日期、地址对象到一个对象流中。,程序的第一个任务就是保证Address类序列化,因此必须使这个

17、类实Serializable接口。 要存储对象数据,还需要建立一个ObjectOutputStream对象: ObjectOutputStream out; out = new ObjectOutputStream(new FileOutputStream(“sample.data”); 其次,只要简单地使用ObjectOutputStream 类中的writeObject方法,例如下列形式: Address address = new Address(“abc”, “”); out.writeObject( address ); 根据Date类的定义,它是已序列化的,所以我们要写入流中的所有

18、对象都已序列化.,8.5 Java多媒体技术,在Sun公司的jdk自带的rt.jar 包文件中,有AudioStream.class、AudioPlayer.class类用于 播放声音文件,我们可以使用输入流: FileInputStream file=new FileInputStream(“声音文件.wav“); AudioStream audio=new AudioStream(file); 使用AudioPlayer类的start()进行播放: AudioPlayer.player.start(audio);,8.5.1 应用输入流播放音频文件,【例8-13】应用输入流播放音频文件。,

19、8.5.2 Java多媒体包JMF的应用,Java有一个多媒体包JMF(Java Media Framework),可以用来编写多媒体应用程序。 建立一个多媒体程序有下列几个步骤: 1、创建多媒体播放对象 try MediaLocator mrl=new MediaLocator(多媒体文件名); player=Manager.createPlayer(mrl); catch(MalformedURLException e) catch(IOException e) catch(NoPlayerException e) ,8.5.2 Java多媒体包JMF的应用,2、向多媒体播放对象注册控制监视器 player.addControllerListener(监视器); 3、让多媒体播放对象对播放媒体进行预提取 player.prefetch(); 4、启动多媒体播放对象 player.start(); 5、停止并释放多媒体播放对象 player.stop(); player.deallocate(); player.close();,【例8-14】设计一个简易多媒体播放器。,本章结束,本文来自于中国信息网,您身边的一站式生活专家!,中国信息网 http:/ 中国信息网论坛频道http:/ 中国信息网分类信息频道http:/ 中国信息网美女频道http:/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1