第八章文件流输入输出操作_第1页
第八章文件流输入输出操作_第2页
第八章文件流输入输出操作_第3页
第八章文件流输入输出操作_第4页
第八章文件流输入输出操作_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章文件流的输入输出操作相关回顾

1、当程序在运行过程中出现错误成为异常;异常分为哪两类?

Error类和Exception类

2、Java异常处理分为哪两步?

捕捉异常、处理异常。

3、处理Java异常的两种机制是什么?

捕捉处理异常(try…catch….)和抛出异常(throw和throws)。

4、异常处理有哪5个关键字?

try、catch、finally和throw、throws。

5、说说catch、finally和throw表示什么意思?

catch表示捕捉异常、finally表示始终都会执行的代码块、throw表示抛出异常。相关回顾……System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();switch(courseCode){ case1: System.out.println("C#编程"); break; case2: System.out.println("Java编程"); break; case3: System.out.println("SQL基础");}}catch(Exceptionex){System.out.println("输入不为数字!");}finally

{System.out.println("欢迎提出建议!");}输入:2Java编程欢迎提出建议!控制台输出输入:B输入不为数字!欢迎提出建议!第一种情况:无异常第二种情况:有异常相关回顾

1、当程序在运行过程中出现错误成为异常;异常分为哪两类?

Error类和Exception类

2、Java异常处理分为哪两步?

捕捉异常、处理异常。

3、处理Java异常的两种机制是什么?

捕捉处理异常(try…catch….)和抛出异常(throw和throws)。

4、异常处理有哪5个关键字?

try、catch、finally和throw、throws。

5、说说catch、finally和throw表示什么意思?

catch表示捕捉异常、finally表示始终都会执行的代码块、throw表示抛出异常。预习检查文件的定义是什么?File类是文件和目录的抽象表示形式。File类常用的方法有哪些,列举三个?exists()、isFile()、isDirectory()、length()、getName()写二进制文件可以使用哪两个类?FileOutputStream、FileWriter对象序列化与反序列化使用哪两个类?ObjectOutputStream、ObjectInputStream本章任务1、创建文件对象。2、读写文本文件。3、读写二进制文件。4、对象的序列化与反序列化。了解文件与流的概念掌握File类掌握文本文件的读写操作掌握二进制文件的读写操作了解对象的序列化、反序列化操作本章目标为什么要使用文件在程序运行时,可以使用内存存储数据。但是内存中的数据在程序退出、断电或计算机重启后就全部清除。将数据存储在内存中,每次运行程序都需要重新录入信息。有实际意义的程序都需要永久保存数据,那我们使用什么来永久性的存储数据呢?答案就是使用文件什么是文件什么是文件?

文件可认为是相关记录或放在一起的数据的集合文件一般存储在哪里?JAVA程序一般通过什么去访问文件属性?

JAVAAPI:java.io.File类File类的定义?File类表示磁盘上的文件或目录。在Java中不管是文件还是目录统一都用File类来表示。

什么是File类File类物理文件或目录构造文件对象操作文件或目录的属性(路径、权限、日期和时间等

File类的常用方法File类的常用方法如下:方法名描述exists()判读文件或目录是否存在,存在返回true,否则返回falsecreateNewFile()创建文件isFile()判断是否是文件,是文件返回trueisDirectory()判断是否是目录,是目录返回truegetName()获取文件或目录名称getPath()获取文件或目录的路径getAbsolutePath()获取文件或目录的绝对路径listFiles()获取指定目录下的所有文件,返回File[]的数组lastModified()获取文件或目录的最后修改日期length()获取文件或目录的大小,单位为字节importjava.io.File;……Filefile=newFile(args[0]);System.out.println("文件或目录是否存在:"+file.exists());System.out.println("是文件吗:"+file.isFile());System.out.println("是目录吗:"+file.isDirectory());System.out.println("名称:"+file.getName());System.out.println("路径:"+file.getPath());System.out.println("绝对路径:"+file.getAbsolutePath());System.out.println("最后修改时间:"+file.lastModified());System.out.println(“文件大小:”+file.length()+“字节”);下面是一个设置与操作File类的实例,可以指定查询某个目录下的所有文件与目录名称。

如何使用File类导入File类判断是目录还是文件,和输出一些常用信息Filef1=newFile("E:\\test");if(f1.exists()){ System.out.println("该文件夹已经存在");}else{ f1.mkdir();}Filef2=newFile("E:\\test\\a.txt");f2.createNewFile();在java.io包中定义的File类是用于针对磁盘创建文件对象的。怎样在Java中实现创建一个文件夹,并在这个文件夹中创建文件。比如想让输出的文件保持到一个原来没有的文件夹下,示例如下:创建一个文件夹test和在该文件夹下创建一个a.txt文件。

创建文件对象在某特定目录下创建文件创建test目录小结1File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作。File类的实例是不可变的,也就是说,一旦创建,File对象表示的抽象路径名将永不改变。File类提供一个抽象的、与系统独立的路径表示。给它一个路径字符串,它会将其转换为与系统无关的抽象路径表示,这个路径可以指向一个文件、目录或是URI(UniformResourceIdentifier)。一个File类的实例被建立时,它就不能再被改变内容。File类实例除了用作一个文件或目录的抽象表示之外,它还提供了不少相关操作方法。可以用它来对文件系统做一些查询与设置的动作。什么是流流是指一连串流动的字符,是以先进先出方式发送信息的通道。InputStreamOutputStream来自数据源的数据流流向目的地的数据流AECDBF流

Java流的分类

字节流8位InputStreamOutputStream字符流16位UnicodeReaderWriter文本文件的读写写文件操作用FileOutputStream字节输出流写文本文件用FileWriter字符输出流写文本文件读文件操作用FileInputStream字节输入流读文本文件用FileReader字符输入流读文本文件在java.io包中定义的输入、输出流操作类都适合对磁盘文件内容的读写操作。它们都可以通过绑定一个文件对象创建输出流对象,可以直接指定磁盘文件名创建输出流对象,通过输入输出流对象来实现文件的读写操作。importjava.io.*;……OutputStreamfos=newFileOutputStream("e:\\test\\a.txt");Stringstr="我是一个好学生";byte[]words=str.getBytes();fos.write(words,0,words.length);

fos.close();FileOutputStream是用于写入字节数据流到文件中的类,继承自OutputStream类,提供了最基础的文件写数据操作。向“e:\\test\\a.txt”文件里写入“我是一个好学生”。

FileOutputStream类导入相关类构造一个文件输出流对象使用write()方法将数据写入文件关闭文件输出流FileWriter是用于写入字符数据流到文件中的类,继承自OutputStreamWriter类,方便创建字符流对象。FileWrite常用方法如下:

FileWriter类方法描述FileWrite(Filef)构造方法,根据File创建FileWrite对象write(Stringval)将字符串写入文件close()关闭文件写入流importjava.io.*;……FileWriterfw=newFileWriter("e:\\test\\a.txt");BufferedWriterbw=newBufferedWriter(fw);bw.writer("我要认真学习");bw.flush();fw.close();向“e:\\test\\a.txt”文件里写入“我要认真学习”。

示例导入相关类创建一个FileWriter对象清空bw对象和关闭fw对象创建一个BufferedWriter对象importjava.io.*;……OutputStreamfos=newFileOutputStream("e:\\test\\a.txt");Stringstr="我是一个好学生";byte[]words=str.getBytes();fos.write(words,0,words.length);

fos.close();FileOutputStream是用于从文件中读取字节数据流的类,提供了最基础的文件读取数据操作。从“e:\\test\\a.txt”文件里取出数据。

FileInputStream类导入相关类构造一个文件输出流对象使用write()方法将数据写入文件关闭文件输出流FileReader是用于从文件中读取字符数据流的类,继承自InputStreamReader类,方便创建字符流对象。FileReader常用方法如下:

FileReader类方法名作用FileReader(Filef)根据File创建FileReader对象用于读取文本文件close()关闭FileReaderimportjava.io.*;……FileWriterfw=newFileWriter("e:\\test\\a.txt");BufferedWriterbw=newBufferedWriter(fw);bw.writer("我要认真学习");bw.flush();fw.close();从“e:\\test\\a.txt”文件里读取数据。

示例导入相关类创建一个FileWriter对象清空bw对象和关闭fw对象创建一个BufferedWriter对象小结2写文本文件操作的一般步骤:构造一个文件输出流对象利用文件输出流的方法写文本文件关闭文件输出流读文本文件操作的一般步骤:构造一个文件输出流对象根据文件路径创建输入流读取数据关闭文件输入流二进制文件的读写为什么要读写二进制文件?有时需要存储一个对象的成员数据,而不是整个对象的信息,成员数据的类型假设都是Java的基本数据类型,这样的需求不必使用Object输入或取出数据。写二进制文件操作用DataOutputStream写二进制文件读二进制文件操作用DataInputStream读二进制文件

如何使用DataInputStream与DataOutputStream读写二进制文件。

1、创建一个Member类。2、将Member类实例的成员数据写入E:\\a.txt文件中。3、在读入文件数据后,将这些数据还原为Member对象。

二进制文件读写示例publicclassMember{ privateStringname; privateintage;

publicMember(){ } publicMember(Stringname,intage){ =name; this.age=age; }……生成getter和setter方法}成员属性Member[]members={newMember("张三",90),newMember("李四",95),newMember("王五",88)}; StringfileName="E:\\a.txt";DataOutputStreamdataOutputStream=newDataOutputStream(newFileOutputStream(fileName));for(Membermember:members){ //写入UTF字符串 dataOutputStream.writeUTF(member.getName()); //写入int数据 dataOutputStream.writeInt(member.getAge());}//写入所有数据至目标文件dataOutputStream.flush();//关闭流dataOutputStream.close();创建流对象写入数据DataInputStreamdataInputStream=newDataInputStream(newFileInputStream(fileName));for(inti=0;i<members.length;i++){ //读出UTF字符串 Stringname=dataInputStream.readUTF(); //读出int数据 intscore=dataInputStream.readInt(); members[i]=newMember(name,score);}dataInputStream.close();//关闭流//显示还原后的数据for(inti=0;i<members.length;i++){ Membermember=(Member)members[i]; System.out.println(member.getName()+""+member.getAge());}读二进制文件对象读出数据二进制文件读写示例运行效果如:

输出结果为:张三90李四95王五88在从文件中读出数据时,不用费心地自行判断读入字符串时或读入int类型时何时该停止,使用对应的readUTF()或readInt()方法就可以正确地读入完整类型数据。对象的序列化与反序列化为什么需要对象的序列化与反序列化?在Java程序的执行过程中,很多数据都是以对象的方式存在于内存中。有时会希望直接将内存中整个对象存储至文件,而不是只存储对象中的某些基本类型成员信息。而在下一次运行程序时,希望可以从文件中读出数据并还原为对象。什么是对象的序列化和反序列化?对象的序列化是指把对象写到一个输出流中,对象的反序列化是指从一个输入流中读取一个对象。

对象序列化的作用及方法对象的序列化主要有以下几种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。在网络上传送对象的字节序列。java.io.ObjectOutputStream代表对象输出流,它的writeObject(Objectobj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。java.io.ObjectOutputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。

如何实现对象序列化与反序列化对象序列化包括如下步骤:创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;通过对象输出流的writeObject()方法写对象。对象反序列化的步骤如下:创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;通过对象输入流的readObject()方法读取对象。

只有实现了Serializable接口的类的对象才能被序列化。name=成龙,age=50将一个对象写入文本文件中,并读取出来。 1、创建一个学生对象 2、序列化对象与反序列化对象运行效果如:

示例

//一个学生对象classStudentimplementsSerializable{privateStringname;privateintage;

publicStudent(Stringname,intage){=name;this.age=age;}}必须实现序列化……ObjectOutputStreamout=newObjectOutputStream(newFileOutputStream("e:\\objectFile.txt"));

//序列化对象

Studentstu=newStudent("成龙",50);out.writeObject(stu);out.close();

//反序列化对象

ObjectInputStreamin=newObjectInputStream(newFileInputStream("e:\\objectFile.txt"));Studentstu1=(Student)in.readObject();

System.out.println(stu1);//关闭流

in.close();创建序列化对象流反序列化对象序列化对象序列化版本号每个类的对象在序列化的时候,JAVA虚拟机会自动根据类中的属性和方法计算出一个序列化版本号。(也就是说:如果类中的属性和方法改变了,那么算出的版本号也会改变)。当反序列化时,JAVA虚拟机会判断流中的对象的序列化版本号与你的类的版本号是否一致,如果不一致,会发生InvalidClassException无效的类异常。所以如果一个类要保持一个序列化版本号,必须声明。privatestaticfinallongserialVersionUID=100L;小结3-1序列化的步骤如下:反序列化的步骤如下:ObjectOutputStreamFileOutputStream文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论