




已阅读5页,还剩85页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
精选文库JAVA编程高级 文件与流3 Sept. 2008- Neusoft Confidential1文件与流目标:Java文件管理及File类的使用。流的概念及API。节点流与处理流的使用。对象序列化。对象序列化有关的接口和类。序列化对象的应用。教学方法:讲授ppt上机练习本章要点文件管理File类的使用与文件操作流的概念及API流的概念节点流与处理流的使用节点流处理流对象的序列化序列化transient关键字文件管理Java中对文件的管理是通过java.io包中的File类实现的JJava中对文件的管理主要是针对文件或是目录路径名的管理文件管理包括 创建文件、目录, 查看文件和目录是否存在, 查看目录内的文件列表, 查看文件和目录的属性(读写、隐藏等), 对文件和目录名改名和删除。File对象可以表示某个文件的名字,也可以表示一个目录的名字。File对象不直接提供查看文件内容的方法,文件内容的操作是通过I/O流来访问的。4File对象的创建文件对象的创建是通过File类的构造器来实例化的File类构造方法: public File(String pathname)File f1 = new File(“c:tempabc.txt”);File f2 = new File(“abc.txt”);说明:1、字符串中使用的”符号属于转义字符,在字符串中要使用真正的”符号,需要连续输入两个”。2、如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储,通过System.getProperty( user.dir )方法可以取得默认的当前路径。3、该方法不是在硬盘上创建一个文件,而是在内存里创建一个File对象。4、File对象只是创建了文件的引用,对象定义后,只是提供了后续通过该对象的引用,来对指定的文件进行相关操作。5File对象的创建 public File(String parent, String child)创建一个以child命名的文件对象,该对象存在于parent命名的路径下。File f = new File(“c:temp”,”test.text”); File(File parent, String child)创建一个以child命名的文件对象,该对象存在于parent的文件对象所引用的路径下。File f = new File(“c:tempnew”);File f1 = new File(f,”test.text”);6File对象的方法boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。boolean canWrite() 测试应用程序是否可以修改此抽象路径名表示的文件。boolean createNewFile() 创建新的空文件。String getName() 返回路径字符串中尾部部分的名字,不包括路径。String getParent() 返回File对象的父目录名String getPath() 返回路径名7File对象的方法(续)boolean delete()删除文件或目录,删除目录的时候,只有目录下没有任何内容,才能被删除。boolean exists()测试此抽象路径名表示的文件或目录是否存在。String getAbsolutePath()返回抽象路径名的绝对路径名字符串。long length()返回由此抽象路径名表示的文件的大小,以byte为单位。boolean renameTo(File dest)重新命名此抽象路径名表示的文件。8File对象的方法(续)boolean isAbsolute()测试此抽象路径名是否为绝对路径名boolean isDirectoryy()测试此抽象路径名表示的文件是否是一个目录。boolean isFile()测试此抽象路径名表示的文件是否是一个标准文件boolean isHidden()测试此抽象路径名指定的文件是否是一个隐藏文件。9File对象的方法(续)String list()返回由此抽象路径名所表示的目录中的文件和目录的名称所组成字符串数组。File listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。boolean mkdir()创建此抽象路径名指定的目录,需要该目录的父目录物理上存在。boolean mkdirs() :创建此抽象路径名指定的目录,包括创建必需但不存在的父目录示例FileDemo.java10文件管理 练习FileExercise.java在本机的磁盘系统中,找一个文件夹,利用File类的提供方法,列出该文件夹中的所有文件的文件名和文件的路径。路径是xxx的文件夹内的文件有:文件名:abc.txt路径名:c:tempabc.txt-文件名:def.txt路径名:c:tempdef.txt11流 在Java程序中,对于文件内容的存取,即对于数据的输入、输出操作,以“流”的方式进行的。 流(Stream)像一个通道,通道内流动着数据,通道两端连接着数据的来源和目的地。数据来源(source)数据目的地(sink)输入流输出流程序程序12流的分类jdk提供了各种各样的“流”类,用以获取不同种类的数据。java.ioio包中定义了多个流类型来实现输入、输出功能,可以从多个角度对其分类: 按数据流的方向:输入流、输出流 按处理数据单位:字节流、字符流 按功能:节点流、处理流节点流:可以从数据源(节点)读写数据处理流:套接在已存在的流(节点流、处理流)之上,通过对数据的处理,为程序提供更为强大的读写功能。13流的分类JDK所提供的所有流类型位于java.io包内,它有两大继承体系: 一个是以byte处理为主的Stream类,他们的命名方式都是以XXXXStream; 另一个继承体系是以字符处理为主的Reader/Writer类,他们的命名方式都是以XXXXReader或XXXXWriter。InputStream(字节输入流)、OutputStream (字节输出流)、Reader(字符输入流)、Writer (字符输出流)这四个类,正是这两大继承体系的父类。14InputStream继承自InputStream的流都用于向程序输入数据,且处理数据的单位为字节。15InputStream类int read() 一次读取一个字节的数据,以int类型把数据返回来,如果没有数据可读了,会返回”-1”。int read(byte b) 把所读取到的数据放在byte数组中,返回实际读取的字节数。void close() 关闭输入流并释放与该流关联的所有系统资源。int available() 获取这个流中还有多少个byte的数据可以读取。16FileInputStreamFileInputStream直接继承于InputStream,用于从文件系统中的某个文件中获得输入字节。两种方式产生FIleInputStream对象: 产生一个File对象,然后当作FileInputStream类构造函数的参数;File f = new File(“c:tempabc.txt”);FileInputStream fin = new FileInputStream(f); 直接给构造函数一个字符串,也就是文件的名称。FileInputStream fin = new FileInputStream(“c:tempabc.txt”);示例FileInputStream.java17FileInputStream练习编写程序,从命令行输入要显示的文件,并显示该文件的内容。18OutputStream继承自OutputStream的流是用于从程序向外界输出数据,且处理数据的单位为字节。19OutputStream类void write(int b)向输出流中写入一个字节的数据。void write(byte b)将一个字节型数组中的数据写入输出流。void close()关闭此输出流并释放与此流有关的所有系统资源。void flush()刷新此输出流并强制写出所有缓冲的输出字节。20FileOutputStreamFileOutputStream类用于将数据写入File,以字节为单位。FileOutputStream构造函数 FileOutputStream (File file)创建一个向指定File 对象表示的文件中写入数据的文件输出流 FileOutputStream (String name)创建一个向具有指定名称的文件中写入数据的输出文件流 FileOutputStream (String name, boolean append) 创建一个向具有指定 name 的文件中写入数据的输出文件流。 第二个参数,true:表示写入的数据会附加到原来文件的后面。 示例: FileOutputStream.java21练习编写一个程序,要求将字符串”abcd”写入d:ioc.txt文件的尾部,如果写入成功则提示“写入成功”。22ReaderReader是输入字符数据用的类,它所提供的方法和InputStream类一样,差别在于InputStream类中用的是byte类型,而Reader类中用的是字符类型。Reader类中没有available方法,取而代之的是”ready”方法,这个方法会去检查Reader对象是否已经准备好输入数据了,如果是返回true,反之返回false。23Reader24Readerint read() 一次读取一个char的数据,以int类型把数据返回来,如果没有数据可读了,会返回”-1”。int read(char b) 把所读取到的数据放在char数组中,返回实际读取的char数。void close() 关闭输入流并释放与该流关联的所有系统资源。boolean ready() 判断是否准备读取此流,如果下一个 read() 可输入,则返回 true,否则返回 false 。25FileReaderFileReader 用于读取字符流,最好是以字符为单位来访问字符数据,这样才不会有文字处理上的问题。示例: FileReader.java26Writer类Writer类是输出字符数据的类,提供的方法和OutputStream类中的方法类似,将OutputStream类中用到的byte类型,换成char类型。BufferedWriterCharArrayWriterPipedWriterWriterOutputStreamWriterFileWriterStringWriterPrintWriterFilterWriter27Writer类void write(int b) 将指定的字符写入到输出流中。void write(char b) 将一个字符型数组中的数据写入输出流。void write(String s) 将一个字符串中的数据写入输出流。void close() 关闭此输出流并释放与此流有关的所有系统资源。void flush() 刷新此输出流并强制写出所有缓冲的输出字符。28FileWriterFileWriter 用于写入字符流示例: FileWriter.java29节点流节点流:从一个特定的数据源(节点)读写数据(如:文件、内存)的流。30类型字节流字符流文件(File)FileInputStreamFileOutputStreampFileReaderFileWriter内存(数组)ByteArrayInputStreamByteOutputArrayStreamCharArrayReaderCharArrayWriter内存(字符串)StringReaderStringWriter管道(Pipe)PipedInputStreamPipedOutputStreamp pPipedReaderPipedWriterp处理流只用字节或是字符为单位来对数据做输入输出是不够的,有时候我们需要一行一行的读数据,有时我们需要读取特定格式的数据,因此Java提供了这样的机制,能把数据流作连接(chain),让原本没有特殊访问方法的流,通过连接到特殊的流后,变成可以用特定的方法来访问数据。连接在已存在的流(节点流、处理流)之上,通过对数据的处理,为程序提供更为强大的读写功能。处理流类的构造函数中,都必须接收另外一个流对象作为参数31处理流处理流类型32处理类型字节流字符流缓冲BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter字符和字节转换InputStreamReaderOutputStreamWriter对象序列化ObjectInputStreamObjObjectOutputStreamtO t tSt数据流DataInputStreamDataOutputStream计数LineNumberInputStreamLineNumberReader重复PushbackInputStreamPushbackReader打印PrintStreamPrintWriter缓冲流缓冲流对读写的数据提供了缓冲的功能,它套接在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法。Java提供了四种缓冲流,其常用的构造方法为: BufferedInputStream(InputStream in) BufferedInputStream(InputStream in, int size) BufferedOutputStream(OutputStream out) BufferedOutputStream(OutputStream out , int size) BufferedReader(Reader in) BufferedReader(Reader in, int sz) BufferedWriter(Writer out) BufferedWriter(Writer out, int sz)33缓冲流缓冲流中的方法: BufferedInputStream支持其父类的mark和reset方法 BufferedReader提供了readLine方法用于读取一行字符串 BufferedWriter提供了newLine方法用于写入一个行分隔符 对于BufferedWriter和BufferedOutputStream,写出的数据会先在内存中缓存,使用flush方法将内存中的数据立刻写出。示例: BufferedInputStream.java 、BufferedWriter.java34数据流数据流提供了可以读写各种基本数据类型的方法DataInputStream和DataOutputStream分别继承自InputStream和OutputStream,属于处理流,需要分别套接在InputStream和OutputStream 上构造方法: DataInputStream(InputStream in) DataOutputStream(OutputStream out) 示例: DataOutputStream.java35转换流InputStreamReader和OutputStreamWriter用于字节数据到字符数据之间的转换InputStreamReader需要和InputStream套接OutputStreamWriter需要和OutputStream套接转换流在构造时,可以指定其编码集合InputStreamReader is = new InputStreamReader(System.in,”GB2312”);示例: InputStreamReader.java36标准I/O设备操作计算机都有输入和输出设备,最常见的输入设备是键盘,用户可以从键盘向程序输入数据;而最常见的输出设备是屏幕,可以把程序的运行结果显示到屏幕上。键盘是默认的标准输入设备,而屏幕是标准的输出设备Java.lang.System类提供了三个成员变量(输入/输出流)来执行标准的I/O操作 in out37System.in输入流提供了从标准输入设备读入数据的功能in是System类中的一个static final的InputStream类型变量默认情况下,in关联到的标准输入设备是键盘可以通过System类的setInt方法来改变默认的标准输入流38System.out输出流提供了向标准输出设备写出数据的功能out是System类中的一个static final的PrintStream类型变量默认情况下,out关联到的标准输出设备是屏幕可以通过System类的setOut方法来改变默认的标准输出流,可以将原来输出到终端屏幕上的信息转向输出到文件。39对象序列化概述将一个对象直接转换成字节流过程称为对象的序列化。从字节流中读取数据转换成对象的过程,称为对象的逆序列化可以简单的理解为把对象中的属性以流的形式进行输入输出的操作。序列化应用的场景: 永久性保存对象,保存对象的字节序列到文件中 通过序列化对象在网络中传递对象 通过序列化在进程间传递对象40支持序列化的接口支持序列化的接口: Serializable:类的对象如果想序列化,必须实现该接口。 Serializable接口中没有定义任何成员,它只用来表示一个类可以被序列化,如果一个类可以序列化,它的所有子类都可以序列化。 Externalizable: Serializable接口的子接口,它表示实现该接口的类在序列化中由该类本身控制数据的写和读。 ObjectOutput:是DataOut
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教新目标 (Go for it) 版七年级上册Unit 3 What color is it 教案配套
- 成品油检定培训
- 2024中电信翼康科技有限公司招聘15人笔试参考题库附带答案详解
- 2024中国铁路济南局集团有限公司招聘普通高校大专(高职)毕业生1617(二)笔试参考题库附带答案详解
- 人教部编版九年级下册5 孔乙己教案设计
- 大学生志愿者培训
- 人教部编版九年级历史上册第14课 文艺复兴运动 教学设计
- 人教部编版九年级道德与法治上册 6.2 共筑生命家园 教学设计
- 人教部编版八年级下册3安塞腰鼓教案配套
- 安全风险防控培训
- 乳腺结节手术后的护理
- 电厂灰场环境风险评估报告
- 设备购置分析报告
- 《动物的家》课件
- 超声评价颈动脉易损斑块中国专家共识 2023版
- 九小场所安全检查表
- 医疗废物处理中的安全与风险管理
- 客人醉酒服务流程
- 军事英语词汇整理
- 克罗恩病 护理查房课件
- 2023电力行业无人机技术规范
评论
0/150
提交评论