Java程序设计实用教程_第10章_输入、输出流课件

上传人:20022****wzdgj 文档编号:243147429 上传时间:2024-09-16 格式:PPT 页数:31 大小:699.01KB
返回 下载 相关 举报
Java程序设计实用教程_第10章_输入、输出流课件_第1页
第1页 / 共31页
Java程序设计实用教程_第10章_输入、输出流课件_第2页
第2页 / 共31页
Java程序设计实用教程_第10章_输入、输出流课件_第3页
第3页 / 共31页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,注意:开始用功了,!,1,Java,程序设计实用教程,第10章,配合,例子源代码一起使用,Power point,制作:耿祥义 张跃平,输入、输出流,2,导读,3,输入、输出流提供一条通道程序,可以使用这条通道读取源中的数据或把数据传送到目的地。,把输入流的指向称作源,程序从指向源的输入流中读取源中的数据;,而输出流的指向是数据要去的一个目的地,程序通过向输出流中写入数据把数据传送到目的地。,概述,4,10.1,File,类,File,对象主要用来获取文件本身的一些信息,不涉及对文件的读写操作。,创建一个,File,对象的构造方法有,3,个:,File(String filename);,File(String,directoryPath,String filename);,File(File f, String filename);,5,10.1.1,文件的属性,File,类的下列方法获取文件本身的一些信息。,public String,getName,(),获取文件的名字。,public,boolean canRead,(),判断文件是否是可读的。,public,boolean canWrite,(),判断文件是否可被写入。,public,boolean,exits(),判断文件是否存在。,public long length(),获取文件的长度(单位是字节)。,public String,getAbsolutePath,(),获取文件的绝对路径。,public String,getParent,(),获取文件的父目录。,public,boolean isFile,(),判断文件是否是一个普通文件,而不是目录。,public,boolean isDirectroy,(),判断文件是否是一个目录。,public,boolean isHidden,(),判断文件是否是隐藏文件。,public long,lastModified,(),获取文件最后修改的时间。,例10-1,6,例10-1,例10-1,Example10_1.java,page 177,7,10.1.2,目录,1创建目录,public,boolean mkdir,(),2列出目录中的文件,public String list(),用字符串形式返回目录下的全部文件。,public File ,listFiles,(),用,File,对象形式返回目录下的全部文件。,public String list(,FilenameFilter obj,),用字符串形式返回目录下的指定类型的所有文件。,public File ,listFiles,(,FilenameFilter obj,),用,File,对象形式返回目录下的指定类型所有文件。,上述两方法的参数,FilenameFilter,是一个接口,,,该接口有一个方法:,public,boolean,accept(File dir,String name);,例10-2,Example10_2.java,FileAccept,.java,8,10.1.3,文件的创建与删除,当使用,File,类创建一个文件对象后,例如,File file=new File(c:,myletter,letter.txt);,如果,c:,myletter,目录中没有名字为,letter.txt,文件,文件对象,file,调用方法,public,boolean createNewFile,();,可以在,c:,myletter,目录中建立一个名字为,letter.txt,的,文件对象调用方法,public,boolean,delete(),可以删除当前文件,例如:,file.delete();,9,10.1.4,运行可执行文件,用,Runtime,类,声明一个对象(,Runtime,类在,java.,lang,包,),Runtime,ec,;,然后使用该类的,getRuntime,(),静态方法创建这个对象:,ec,=Runtime.,getRuntime,();,ec,可以调用,exec(String command),方法打开本地机的可执行文件或执行一个操作。,例10-3,Example10_3.java,10,10.2,字节流与字符流,java.,io,包提供了大量的流类,,Java,把,InputStream,抽象类的子类创建的流对象称作字节输入流、,OutputStream,抽象类的子类创建的流对象称作字节输出流,,Java,把,Reader,抽象类的子类创建的流对象称作字符输入流、,Writer,抽象类的子类创建的流对象称作字符输出流。,针对不同的源或目的地,,java.,io,包为程序提供了相应的输入流或输出流,这些输入、输出流绝大部分都是,InputStream,、,OutputStream,、Reader,或,Writer,的子类。,11,10.2.1,InputStream,类与,OutputSream,类,InputStream,类提供的,read,方法以字节为单位顺序地读取源中的数据,只要不关闭流,每次调用,read,方法就顺序地读取源中的其余内容,直到源的末尾或输入流被关闭。,InputStream,类有如下常用的方法。,int,read(),int,read(byte b ),int,read(byte b ,int,off,int len,),void close(),long skip(long,numBytes,),OutputStream,流以字节为单位顺序地写文件,只要不关闭流,每次调用,write,方法就顺序地向目的地写入内容,直到流被关闭。,OutputStream,类有如下的常用的方法。,void write(,int,n),void write(byte b ),void write(byte b ,int,off,int len,),void close(),12, 10.2.2,Reader,类与,Writer,类,1,Reader,类提供的,read,方法以字符为单位顺序地读取源中的数据。,int,read():,int,read(char b):,int,read(char b,int,off,int len,):,void close():,long skip(long,numBytes,):,2,Writer,流以字符为单位顺序地写文件,每次调用,write,方法就顺序地向目的地写入内容。,Writer,类有如下常用的方法。,void write(,int,n):,向输出流写入一个字符。,void write(byte b):,向输出流写入一个字符数组。,void write(byte b,int,off,int,length):,从给定字符数组中起始于偏移量,off,处取,len,个字符写到输出流。,void close():,关闭输出流。,13, 10.2.3,关闭流,流都提供了关闭方法,close(),,,尽管程序结束时会自动关闭所有打开的流,但是当程序使用完流后,显式地关闭任何打开的流仍是一个良好的习惯。,通过调用,close(),方法,可以保证操作系统把流缓冲区的内容写到它的目的地,即关闭输出流可以把该流所用的缓冲区的内容冲洗掉。,14,10.3,文件字节流,由于应用程序经常需要和文件打交道,所以,InputStream,专门提供了读写文件的子类:,FileInputStream,和,FileOutputSream,类。如果程序对文件的操作比较简单,比如只是顺序地读写文件,那么就可以使用,FileInputStream,和,FileOutputSream,类创建的流对文件进行读写操作。,15,10.3.1,文件字节输入流,1,创建文件字节输入流,FileInputStream,类创建的对象被称作文件字节输入流。,构造方法,:,FileInputStream,(String name);,FileInputStream,(File file);,读取一个名为,hello.txt,的文件,建立一个文件输入流对象,如下所示:,try ,FileInputStream,in = new,FileInputStream,(hello.txt);,catch (,IOException,e) ,System.out.,println,(File read error:+e );,2,read,方法,以字节为单位读文件,int,read();,int,read(byte b);,int,read(byte b,int,off,int len,);,例10-4,Example10_4.java,16,10.3.2,文件字节输出流,1,创建文件字节输,出,流,FileOutputStream,类创建的对象被称作文件字节输出流。,构造方法:,FileOutputStream,(String name),FileOutputStream,(File file),2以字节为单位写文件,FileOutputStream,流的目的地是文件,所以文件输出流调用,write(byte b ),方法把字节写入到文件。,例10-5,Example10_5.java,17,10.4,文件字符流,1,FileReader,和,FileWriter,用来创建文件字符输入、输,出,流,,构造方法:,FileReader,(String filename);,FileReader,(File filename);,FileWriter,(String filename);,FileWriter,(File filename);,2,字符输入流和输出流的,read(),和,write(),方法,以字符为基本单位处理数据。,例10-6,Example10_6.java,18,10.5,缓冲流,1,BufferedReader,和,BufferedWriter,类创建的对象称作缓冲输入、输出流。二者的源和目的地必须是字符输入流和字符输出流。,构造方法:,BufferedReader,(Reader in);,BufferedWriter,(Writer out);,2,BufferedReader,和,BufferedWriter,类读写文件的方法:,readLine,(),BufferedReader,流读取文本行,write(String s,int,off,int len,),BufferedWriter,流把字符串,s,写到文件中,newLine,();,BufferedWriter,流向文件写入一个回行符,例10-7,Example10_7.java,19,10.6,随机流,使用,RandomAccessFile,类来创建一个随机访问文件流。,RandomAccessFile,类创建的流的指向既可以作为源也可以作为目的地。,构造方法:,RandomAccessFile,(String name,String mode) ;,RandomAccessFile,(File file,String mode) ;,相关方法:,seek(long a),定位,RandomAccessFile,流的读写位置,getFilePointer,(),获取流的当前读写位置,例10-8,Example10_8.java,表10.1,RandomAccessFile,类的常用方法,处理,readLine,(),方法,在读取含有非,ASCII,字符的文件时出现“乱码”现象的方法:,1,读取,String,str,=in.,readLine,();,2,用“,iso,-8859-1”,重新编码,byte b=,str,.,getBytes,(,iso,-8859-1);,3,使用当前机器的默认编码将字节数组转化为字符串,String content=new String(b);,例10-9,Example10_9.java,20,表10.1,RandomAccessFile,类的常用方法,21,10.7,数组流,1,字节数组流: 字节数组输入流,ByteArrayInputStream,和字节数组输出流,ByteArrayOutputStream,分别使用字节数组作为流的源和目标。,ByteArrayInputStream,构造方法及,常用方法,ByteArrayInputStream,(byte,buf,);,ByteArrayInputStream,(byte,buf,int,offset,int,length);,public,int,read(),;,顺序地从源中读出一个字节,public,int,read(byte b,int,off,int len,);,顺序地从源中读出参数,len,指定的字节数,ByteArrayOutputStream,流,构造方法及,常用方法,ByteArrayOutputStream,();,ByteArrayOutputStream,(,int,size);,public void write(,int,b);,顺序地向缓冲区写入一个字节,public void write(byte b,int,off,int len,);,将参数,b,中指定的,len,个字节顺序地写入缓冲区,public byte,toByteArray,();,返回输出流写入到缓冲区的全部字节,2字符数组,CharArrayReader,和,CharArrayWriter,类,是字符数组流,,字符数组流,分别使用字符数组作为流的源和目标。,例10-10,Example10_10.java,22,10.8,数据流,DataInputStream,和,DataOutputStream,类,创建的对象称为数据输入流和数据输出流。,构造方法,DataInputStream,(,InputStream,in),创建的数据输入流指向一个由参数,in,指定的底层输入流,DataOutputStream,(,OutnputStream,out),创建的数据输出流指向一个由参数,out,指定的底层输出流,表10.2,是,DataInputStream,和,DataOutputStream,类的常用方法,例10-11,Example10_11.java,例10-12,Example10_12.java,EncryptAndDecrypt,.java,23,表,10.2,DataInputStream,及,DataOutputSteam,类的部分方法,24,10.9,对象流,ObjectInputStream,和,ObjectOutputStream,类,创建的对象称为对象输入流和对象输出流。,它的构造方法是:,ObjectInputStream,(,InputStream,in),ObjectOutputStream,(,OutputStream,out),相关方法:,writeObject,(Object,obj,),将一个对象,obj,写入到一个文件,readObject,(),读取一个对象到程序中,所谓序列化:一个类如果实现了,Serializable,接口,那么这个类创建的对象就是所谓序列化的对象。,例10-13,TV.java,Example10_13.java,25,10.10,序列化与对象克隆,如果一个“复制品”实体的变化不会引起原对象实体发生变化,反之亦然。这样的复制品称为原对象的一个克隆对象或简称克隆。,一个对象调用,clone(),方法就可以获取该对象的克隆对象。,对象输入流通过对象的序列化信息来得到当前对象的一个克隆。,例10-13,TV.java,Example10_13.java,26,10.11,文件锁,FileLock,、,FileChannel,类,处理,Java,提供的文件锁功能。它们分别在,java.,nio,和,java.,nio,.channels,包中。,输入、输出流读写文件时可以使用文件锁。,RondomAccessFile,创建的流在读写文件时使用文件锁的步骤如下:,1先使用,RondomAccessFile,流建立指向文件的流对象,该对象的读写属性必须是,rw,,,例如:,RandomAccessFile,input=,new,RandomAccessFile,(Example.java,rw,);,2Input,流调用方法,getChannel,(),获得一个连接到地层文件的,FileChannel,对象(信道),例如,FileChannel,channel=input.,getChannel,();,3,信道调用,tryLock,(),或,lock(),方法获得一个,FileLock,(,文件锁)对象,这一过程也称作对文件加锁,例如:,FileLock,lock=channel.,tryLock,();,例10-14,Example10_14.java,27,10.12,使用,Scanner,解析文件_1,使用,Scanner,类和正则表达式来解析文件。,1使用默认分隔标记解析文件,创建,Scanner,对象,并指向要解析的文件,例如:,File file = new File(hello.java);,Scanner sc = new Scanner(file);,sc,将空白作为分隔标记 ,相关方法:,next(),依次返回,file,中的单词,hasNext,(),判断,file,最后一个单词是否已被,next(),方法返回,例10-15,Example10_15.java,cost.txt,28,10.12,使用,Scanner,解析文件_2,2使用正则表达式作为分隔标记解析文件,创建,Scanner,对象,指向要解析的文件,并使用,useDelimiter,方法指定正则表达式作为分隔标记,例如:,File file = new File(hello.java);,Scanner sc = new Scanner(file);,sc.,useDelimiter,(,正则表达式);,sc,将正则表达式作为分隔标记,相关方法:,next(),依次返回,file,中的单词,hasNext,(),判断,file,最后一个单词是否已被,next(),方法返回,例10-16,Example10_16.java,student.txt,29,10.13,使用,Console,流读取密码,JDK1.6,版本在,java.,io,包中新增了一个,Console,流可以读取用户在命令行输入的密码,而且用户在命令行输入的密码不会显示在命令行中。,首先使用,System,类调用,console(),方法返回一个,Console,流:,Console cons = System.console();,然后,,Console,流调用,readPassword,(),方法读取用户在键盘输入的密码,并将密码以一个,char,数组返回:,char,passwd,= cons.,readPassword,();,例10-17,Example10_17.java,30,31,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!