第八章 文件流的输入输出操作(Java)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
22
示例
从“e:\\test\\a.txt”文件里读取数据。
import java.io.*; …… FileReader fr = new FileReader(" e:\\test\\a.txt "); BufferedReader br = new BufferedReader(fr); System.out.println(br.readLine()); br.close(); fr.close(); // 要读取行需使用 要读取行需使用br
FileInputStream类 类
FileInputStream 是用于从文件中读取字节数据流的类,提 供了最基础的文件读取数据操作。 从“e:\\test\\a.txt”文件里取出数据。
import java.io.*; …… InputStream fis = new FileInputStream(" e:\\test\\a.txt "); byte[] buf = new byte[1024]; while ((fis.read(buf) != -1) { System.out.println(new String(buf)); } fis.close();
创建文件对象
在java.io包中定义的File类是用于针对磁盘创建文件对象的。 怎样在Java中实现创建一个文件夹,并在这个文件夹中创 建文件。比如想让输出的文件保持到一个原来没有的文件 夹下,示例如下: 创建一个文件夹test和在该文件夹下创建一个a.txt文件。
File f1 = new File("E:\\test"); if(f1.exists()){ System.out.println("该文件夹已经存在 该文件夹已经存在"); 该文件夹已经存在 }else{ f1.mkdir(); } File f2 = new File("E:\\test\\a.txt"); f2.createNewFile();
10
描述 判读文件或目录是否存在,存在返回true,否则 返回false 创建文件 判断是否是文件,是文件返回true 判断是否是目录,是目录返回true 获取文件或目录名称 获取文件或目录的路径 获取文件或目录的绝对路径 获取指定目录下的所有文件,返回File[]的数组 获取文件或目录的最后修改日期 获取文件或目录的大小,单位为字节
小结1
File类提供了与平台无关的方法来对磁盘上的文件或目录进行 操作。File 类的实例是不可变的,也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。 File类提供一个抽象的、与系统独立的路径表示。给它一个路 径字符串,它会将其转换为与系统无关的抽象路径表示,这个 路 径 可 以 指 向 一 个 文 件 、 目 录 或 是 URI(Uniform Resource Identifier)。 一个File类的实例被建立时,它就不能再被改变内容。File类 实例除了用作一个文件或目录的抽象表示之外,它还提供了不 少相关操作方法。可以用它来对文件系统做一些查询与设置的 动作。
什么是流
• 流是指一连串流动 一连串流动的字符,是以先进先出 先进先出方 一连串流动 先进先出 式发送信息的通道。
InputStream
F
E
D
C
B
A
OutputStream
来自数据源的数据流 流向目的地的数据流
流
Java流的分类
字节流Hale Waihona Puke Baidu
– – 8位 InputStream OutputStream
本章任务
1、创建文件对象。 2、读写文本文件。 3、读写二进制文件。 4、对象的序列化与反序列化。
本章目标
了解文件与流的概念 掌握File类 掌握文本文件的读写操作 掌握二进制文件的读写操作 了解对象的序列化、反序列化操作
为什么要使用文件
• 在程序运行时,可以使用内存存储数据。但是内存中的数 据在程序退出、断电或计算机重启后就全部清除。 • 将数据存储在内存中,每次运行程序都需要重新录入信息。 • 有实际意义的程序都需要永久保存数据,那我们使用什么 来永久性的存储数据呢? • 答案就是 使用文件
字符流
– – 16 位 Unicode Reader Writer
文本文件的读写
写文件操作
– – 用FileOutputStream 字节输出流写文本文件 用FileWriter字符输出流写文本文件
读文件操作
– – 用FileInputStream字节输入流读文本文件 用FileReader字符输入流读文本文件
包中定义的输入、 在java.io包中定义的输入、输出流操作类都适合对磁盘文件内容的 包中定义的输入 读写操作。它们都可以通过绑定一个文件对象创建输出流对象, 读写操作。它们都可以通过绑定一个文件对象创建输出流对象,可 以直接指定磁盘文件名创建输出流对象, 以直接指定磁盘文件名创建输出流对象,通过输入输出流对象来实 现文件的读写操作。 现文件的读写操作。
第八章
文件流的输入输出操作
相关回顾
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表示抛出异常。
19
示例
向“e:\\test\\a.txt”文件里写入“我要认真学习”。
import java.io.*; …… FileWriter fw = new FileWriter(" e:\\test\\a.txt "); BufferedWriter bw = new BufferedWriter(fw); bw.writer("我要认真学习 我要认真学习"); 我要认真学习 bw.flush(); fw.close();
FileOutputStream类 类
FileOutputStream 是用于写入字节数据流到文件中的类, 继承自OutputStream类,提供了最基础的文件写数据操作。 向“e:\\test\\a.txt”文件里写入“我是一个好学生”。
import java.io.*; …… OutputStream fos = new FileOutputStream(" e:\\test\\a.txt "); String str ="我是一个好学生 我是一个好学生"; 我是一个好学生 byte[] words = str.getBytes(); fos.write(words, 0, words.length); fos.close();
相关回顾
…… System.out.print("请输入课程代号 至3之间的数字 :"); 请输入课程代号(1至 之间的数字 之间的数字): 请输入课程代号 Scanner in = new Scanner(System.in); try { int courseCode = in.nextInt(); 输入:2 输入:B switch (courseCode) { case 1: System.out.println("C#编程 编程"); 编程 break; case 2: System.out.println("Java编程 编程"); 编程 break; case 3: 第一种情况: 第一种情况: 第二种情况: 第二种情况 System.out.println("SQL基础 基础"); 基础 } 无异常 有异常 } catch (Exception ex) { System.out.println("输入不为数字!"); 输入不为数字! 输入不为数字 } finally { 控制台输出 System.out.println("欢迎提出建议!"); 欢迎提出建议! 欢迎提出建议 }
输入不为数字! Java编程 编程 输入不为数字 欢迎提出建议! 欢迎提出建议! 欢迎提出建议 欢迎提出建议
预习检查
文件的定义是什么? File类是文件和目录的抽象表示形式。 File类常用的方法有哪些,列举三个? exists()、isFile()、isDirectory()、length()、getName() 写文本文件可以使用哪两个类? FileOutputStream、FileWriter 对象序列化与反序列化使用哪两个类? ObjectOutputStream 、ObjectInputStream
如何使用File类 如何使用 类
下面是一个设置与操作File类的实例,可以指定查询某个目 录下的所有文件与目录名称。
import java.io.File; …… File file = new File(args[0]); 导入File类 判断是目录还是文件, 和输出一些常用信息
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()+ “ 字节”); 文件大小:” 字节” 文件大小
什么是文件
• 什么是文件? 文件可认为是相关记录或放在一起的数据的集合 • 文件一般存储在哪里?
• JAVA程序一般通过什么去访问文件属性? JAVA API :java.io.File 类
什么是File类
• File类的定义?
File类表示磁盘上的文件或目录。在Java中不管是文件还是 类表示磁盘上的文件或目录。 类表示磁盘上的文件或目录 中不管是文件还是 目录统一都用File类来表示。 类来表示。 目录统一都用 类来表示
File 类
构造文件对象 物理文件或目录
操作文件或目录的属性
(路径、权限、日期和时间等 )
File类的常用方法
• File类的常用方法如下:
方法名 exists() createNewFile() isFile() isDirectory() getName() getPath() getAbsolutePath() listFiles() lastModified() length()
18
FileWriter类 类
FileWriter是用于写入字符数据流到文件中的类,继承自 OutputStreamWriter类,方便创建字符流对象。 FileWrite常用方法如下:
方法 FileWrite(File f) ( ) write( String val ) close() 描述 构造方法,根据 创建FileWrite对象 构造方法,根据File创建 创建 对象 将字符串写入文件 关闭文件写入流
21
FileReader类 类
FileReader是用于从文件中读取字符数据流的类,继承自 InputStreamReader类,方便创建字符流对象。 FileReader常用方法如下:
方法名 FileReader(File f) close() 作用 根据File创建 创建FileReader对象用于读取文本 根据 创建 对象用于读取文本 文件 关闭FileReader 关闭