资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,9,章 输入,/,输出流和文件操作,9.1,文件和流的概念,9.2,字节输入,/,输出流类,9.3,字符输入,/,输出流类,9.4,文件操作类,9.5,管道流及其应用,2026/4/9 周四,1,9.1,文件和流的概念,9.1.1,操作系统中的文件和目录概念,9.1.2,程序设计语言中的文件类型,9.1.3,流的概念,9.1.4 Java,的输入,/,输出流与文件操作概述,2026/4/9 周四,2,9.1.1,操作系统中的文件和目录概念,文件与文件系统,文件是信息的一种组织形式。,文件系统负责存取和管理文件。,目录结构与文件检索,文件的逻辑结构,流式文件:由字节序列或字符序列组成。,记录式文件:包含若干记录的有结构的文件。,文件的存取方法,顺序存取:按记录顺序进行读写操作。,随机存取:按记录位置的编号进行读写。,2026/4/9 周四,3,9.1.2,程序设计语言中的文件类型,文件类型概念,结构化程序设计语言中,文件是一种构造数据类型。,面向对象程序设计语言中,文件是一种类。,文件与数组的区别,数组是由固定多个元素组成,而文件的长度是不确定的、任意的。,数组元素总是存放在内存,而文件则往往与外部介质相联系。,以“数组变量,下标,”,的形式可以访问数组中的任意一个元素,而文件不能通过下标形式访问,需要通过文件对象调用相应方法来访问。,2026/4/9 周四,4,9.1.3,流的概念,流的定义和作用,流是指一组有顺序、有起点和终点的字节集合,是对数据传输的总称或抽象。,数据流动具有方向性:输入流和输出流。,流的基本操作:读操作和写操作。,流采用缓冲区技术来提高数据传输效率。,设计流的目的是使数据传输操作独立于相关设备。,2026/4/9 周四,5,9.1.3,流的概念,流的存在,2026/4/9 周四,6,9.1.4 Java,的输入,/,输出流与文件操作概述,流类,InputStream,抽象的字节输入流类,OuputStream,抽象的字节输出流类,Reader,抽象的字符输入流类,Writer,抽象的字符输出流类,文件操作类,File,文件类,RandomAccessFile,随机存取文件类,2026/4/9 周四,7,9.2,字节输入,/,输出流类,9.2.1,字节输入流类,InputStream,9.2.2,字节输出流类,OutputStream,9.2.3 Java,的标准输入,/,输出,9.2.4,文件字节输入,/,输出流类,9.2.5,数据字节输入,/,输出流类,9.2.6,对象输入,/,输出流类,2026/4/9 周四,8,9.2.1,字节输入流类,InputStream,InputStream,类,public abstract class,InputStream,extends Object implements Closeable,public abstract,int,read(),throws,IOException,;/,返回读取的一个字节,抽象方法,public,int,read(byte,b),throws,IOException,/,从输入流中读取若干字节到指定缓冲区,返回实际读取的字节数,public void close()throws,IOException,/,关闭输入流,空方法,InputStream,类的子类,2026/4/9 周四,9,9.2.2,字节输出流类,OutputStream,OuputStream,类,public abstract class,OutputStream,extends Object implements Closeable,Flushable,public abstract void,write(int,b),throws,IOException,;/,写入一个字节,抽象方法,public void,write(byte,b),throws,IOException,/,将缓冲区中的若干字节写入输出流,public void flush()throws,IOException,/,立即传输,public void close()throws,IOException,/,关闭输出流,空方法,OutputStream,类的子类,2026/4/9 周四,10,9.2.3 Java,的标准输入,/,输出,标准输入,/,输出常量,public final class System extends Object,public final static,InputStream,in,/,标准输入常量,public final static,PrintStream,out,/,标准输出常量,public final static,PrintStream,err/,标准错误输出常量,System.in.read,();,System.out.print,();,或,System.out.println,();,PrintStream,类,2026/4/9 周四,11,【,例,9.1】,标准输入,/,输出。,2026/4/9 周四,12,9.2.4,文件字节输入,/,输出流类,FileInputSream,类,public class,FileInputStream,extends,InputStream,public,FileInputStream(String,name)throws,FileNotFoundException,public,FileInputStream(File,file)throws,FileNotFoundException,其构造方法为指定文件创建文件字节输入流对象,如果指,定文件不存在,则无法读取数据,将抛出异常。,FileOutputStream,类,其构造方法为指定文件创建文件字节输出流对象。如果指,定文件不存在,则创建一个新文件写入数据。,2026/4/9 周四,13,【,例,9.2】,使用文件字节输入,/,输出流实现文件的输入,/,输出操作。,文件输入操作,文件输出操作,文件复制操作,2026/4/9 周四,14,9.2.5,数据字节输入,/,输出流类,数据字节输入,/,输出流类提供直接读或写基本数据类型数据的方法,在读或写某种基本数据类型数据时,不必关心它的实际长度是多少字节。,数据字节输入流,DataInputStream,类提供,8,个,read(),方法,分别用于从字节输入流中获得基本数据类型的数据值。,数据字节输出流,DataOutputStream,类提供,9,个,write(),方法,分别用于向字节输出流中写入,8,种基本数据类型和字符串的数据值,由各方法名反映写入的数据类型。,2026/4/9 周四,15,【,例,9.3】,将,Fibonacci,序列值写入一个整数类型文件中。,2026/4/9 周四,16,9.2.6,对象输入,/,输出流类,Java,提供对象流用于在字节流中直接写入或读取一个对象。,对象流分为对象输入流,ObjectInputStream,类和对象输出流,ObjectOutputStream,类。,【,例,9.4】,使用对象流将若干学生对象写入以对象为基本类型的记录式文件中。,2026/4/9 周四,17,各种输入,/,输出流及其读,/,写方法,2026/4/9 周四,18,9.3,字符输入,/,输出流类,9.3.1,字符输入,/,输出流抽象类,Reader,类和,Writer,类,9.3.2,文件字符输入,/,输出流类,FileReader,类和,FileWriter,类,9.3.3,字符缓冲流类,BufferedReader,类和,BufferedWriter,类,【,例,9.5】,将,Fibonacci,序列值写入一个文本文件。,2026/4/9 周四,19,9.4,文件操作类,9.4.1,文件类,File,9.4.2,文件过滤器接口,9.4.3,文件对话框组件,9.4.4,随机存取文件类,2026/4/9 周四,20,9.4.1,文件类,File,File,类保存文件或目录的各种属性,包括文件名、文件长,度、最后修改时间、是否可读等。提供获得当前文件的路,径名、判断指定文件是否存在、获得当前目录中所有文件,列表、创建文件、删除文件、创建目录、删除目录等操作,的方法。,【,例,9.6】,当前目录文件列表。,2026/4/9 周四,21,9.4.2,文件过滤器接口,在,Java,程序中,可以通过指定文件过滤条件来实现获得部分文件的功能。该功能需要使用过滤器接口和,File,类的方法共同完成。,Java,提供了两个接口,FileFilter,和,FilenameFilter,来实现对文件名字符串的过滤。,通过,File,类的,list(),和,listFiles,(),方法获得文件列表时使用过滤器。,【,例,9.7】,带过滤器的文件名列表。,2026/4/9 周四,22,9.4.3,文件对话框组件,Java,提供的文件对话框组件,FileDialog,能够调用,Windows,的“打开”文件对话框和“保存”文件对话框。,FileDialog,类声明及构造方法,FileDialog,filedialog_open,=new,FileDialog(frame,Open,FileDialog.LOAD,);/,创建打开文件对话框,FileDialog,filedialog_save,=new,FileDialog(frame,“SaveAs”,FileDialog.SAVE,);/,创建保存文件对话框,文件对话框的方法,public String,getFile,()/,获取选择的文件名,public String,getDirectory,()/,获取选择路径,2026/4/9 周四,23,【,例,9.8】,文件管理器和文本文件编辑器。,2026/4/9 周四,24,实训,4,输入,/,输出流与文件操作,教材,P,323,1,将,Java,的关键字保存在一个文本文件中,判断一个字符串是否为,Java,的关键字。,2,参考实验内容,(3),和,P,314,的思考题,尽可能的修改和完善例题,9.8,。,2026/4/9 周四,25,
展开阅读全文