




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第 9 讲讲 JAVA输入输出类输入输出类(java.io 包)第第 9 讲讲学习目标学习目标n理解流,标准输入理解流,标准输入/输出流输出流的概念的概念n运用运用File类进行文件操作类进行文件操作n运用运用FileInputStream和和FileOutputStream类类读写文本文件读写文本文件n运用运用BufferedReader和和BufferedWriter类读写类读写文本文件文本文件n运用运用DataInputStream和和DataOutputStream类读写二进制文件类读写二进制文件信息输入输入设备内存储器计算运算器结果输出设备计算结果写外存储器读计算机内存与外存计算机
2、内存与外存 要处理的信息存要处理的信息存放在放在 ”变量变量”中中, 当程序运行结束当程序运行结束或停电时或停电时,信息丢失信息丢失 所有的信息以所有的信息以”文件文件”的方式存储的方式存储在外存中在外存中, 可以长可以长期保存期保存那么那么,(1)如何通过键盘输入信息如何通过键盘输入信息(数据数据);(2)如何通过显示器输出数据如何通过显示器输出数据(信息信息)(3)什么是文件什么是文件?(4) 程序是如何通过程序是如何通过”读读”或或”写写” 对文件进行操作的呢对文件进行操作的呢?输入输出n输入输出是计算机系统与外界交换信息的途径,其输入输出是计算机系统与外界交换信息的途径,其输入、输出过
3、程采用输入、输出过程采用“流流”的形式。的形式。 n流流n在在Java中,所有中,所有输入和输出操作输入和输出操作都是以都是以数据流数据流(stream)形式进行的。)形式进行的。n按照数据的传输方向,流分为按照数据的传输方向,流分为输入流输入流和和输出流输出流。n按照流动类型又分为按照流动类型又分为字节流字节流和和字符流字符流。流 3-1n流是指一连串流动的流是指一连串流动的字符,是以先进先出方先进先出方式发送信息式发送信息的通道InputStreamOutputStream来自数据源的数据流来自数据源的数据流流向目的地的数据流流向目的地的数据流AECDBF流 3-2流 3-3nJava流的
4、分类n字节流字节流 8 位位 InputStream (输入字节流输入字节流) OutputStream(输出字节流输出字节流)n字符流()字符流() 16 位位 Unicode Reader (输入字符流输入字符流) Writer(输出字符流输出字符流)输入输出类n输出操作输出操作n输出信息到屏幕输出信息到屏幕n输出信息到文件输出信息到文件n输入操作输入操作n从键盘上读取信息从键盘上读取信息n读取文件内容读取文件内容1. I/O控制台(键盘/显示器) 1 在在JAVA语言中:语言中: 一般通过一般通过“键盘键盘”输入所需要的信息(数据);输入所需要的信息(数据); 通过通过“显示器显示器”显
5、示(输出)运算结果。显示(输出)运算结果。2 通过键盘、显示器,输入通过键盘、显示器,输入/输出信息通常称为输出信息通常称为I/O控制台;控制台;3 三种标准的输入三种标准的输入/输出设备输出设备 (1)System.out 提供向提供向“标准输出标准输出”写出数据的功能(显示器)写出数据的功能(显示器) (2)System.in 提供从提供从“标准输入标准输入”读入数据的功能(键盘)读入数据的功能(键盘) (3) System.err提供向提供向“标准错误输出标准错误输出”写出数据的功能(显示写出数据的功能(显示器)器)本次课的最后再详细讲解本次课的最后再详细讲解!一、流的基本概念和性质(1
6、)流)流: 流是指一组有顺序的、有起点和终点的流是指一组有顺序的、有起点和终点的字节字节或或字符字符集合;集合;(2)按流向分类:)按流向分类: 输入流:输入流: 输出流:输出流:(3)流的基本操作:)流的基本操作: 读操作:从流中取得数据的操作;对输入流只能进行读操作。读操作:从流中取得数据的操作;对输入流只能进行读操作。 写操作:向流中添加数据的操作;对输出流只能进行写操作写操作:向流中添加数据的操作;对输出流只能进行写操作。(4)流采用缓冲区技术: 流进行读写操作的流进行读写操作的单位是字节或字符单位是字节或字符,即一次可以写入一个字节(字,即一次可以写入一个字节(字符),或读取一个字节
7、(字符);符),或读取一个字节(字符); 为了提高效率,设置一个缓冲区,一次可以读为了提高效率,设置一个缓冲区,一次可以读/写若干字节(字符)写若干字节(字符),配备缓冲区的流,称为,配备缓冲区的流,称为缓冲流(缓冲流(Bufferd Stream)。 特别注意:在进行,写操作时:特别注意:在进行,写操作时: 当缓冲区满后,系统自动传到相应的输出设备,当缓冲区满后,系统自动传到相应的输出设备, 不满时,要进行传到相应的输出设备,需要发不满时,要进行传到相应的输出设备,需要发传输操作(传输操作(flush)。)。(5)流的作用:)流的作用: 程序中,需要程序中,需要根据待传输数据的不同特性而使用
8、不同的流根据待传输数据的不同特性而使用不同的流。(6)流类:)流类: 字节流字节流: 以字节作为流中元素的基本类型,每次读写的最小单位以字节作为流中元素的基本类型,每次读写的最小单位是一个字节,是一个字节, 字节输入流是字节输入流是InputStream类及其子类;类及其子类; 字节输出流是字节输出流是OutputStream类及其子类;类及其子类; 字符流字符流: 以字符作为流中元素的基本类型,每次读写的最小单位以字符作为流中元素的基本类型,每次读写的最小单位是一个字符(是一个字符(2个字节的个字节的Unicode码),码), 字符输入流是字符输入流是Reader类及其子类;类及其子类; 字
9、符输出流是字符输出流是Writer类及其子类;类及其子类; 字节流与字符流之间的桥梁流:字节流与字符流之间的桥梁流: InputStreamReader: 将将字节流字节流转换为转换为字符流字符流输入;输入; OutputStreamWriter:将:将字符流字符流转换为转换为字节流字节流输出;输出; 二、文件的概念及其文件类-教材9.6节 1 1 文件文件 所谓所谓“文件文件”,是指记录在外部介质上的数据集合。存储在磁盘中,是指记录在外部介质上的数据集合。存储在磁盘中的文件叫磁盘文件,简称文件。每个文件具有唯一的文件标识,即文件的文件叫磁盘文件,简称文件。每个文件具有唯一的文件标识,即文件全
10、称。全称。 Windows环境下的文件格式为:环境下的文件格式为: 文件路径文件路径文件名文件名 (1)文件路径:)文件路径: 由磁盘盘符和文件夹名构成。由磁盘盘符和文件夹名构成。 (2)文件名:)文件名: 由主文件名和扩展名构成。由主文件名和扩展名构成。 例如:例如:d:vbcj.dat 表示文件表示文件cj.dat存放在存放在D盘的盘的vb文件夹中,文件夹中, 文件名为:文件名为:CJ;文件的扩展名为;文件的扩展名为.dat。 JAVA语言中,语言中,文件格式为:文件路径文件格式为:文件路径文件名文件名 例如例如: d:vbcj.dat2 File类与文件操作nFile类 文件类是一个类,
11、它必须包含:属性、构造方法,一般方文件类是一个类,它必须包含:属性、构造方法,一般方法。法。问题:问题: 文件的文件的属型有那些属型有那些? 文件类的文件类的构造方法有几个构造方法有几个,每个什么格式?,每个什么格式? 对文件进行操作的对文件进行操作的方法有那些,都有什么操作方法有那些,都有什么操作?注意:注意:nFile:以以文件路径名文件路径名的形式代表一个文件;的形式代表一个文件; (文件与文件夹的区别)(文件与文件夹的区别)n要对文件进行操作,必须找到该文件要对文件进行操作,必须找到该文件 (通过文件的路径名找);(通过文件的路径名找);n要进行操作,必须找到或给出文件,并形成文件对象
12、要进行操作,必须找到或给出文件,并形成文件对象 (调用文件类的构造方法)(调用文件类的构造方法)下面通过构造方法,来理解上面的三个注意。下面通过构造方法,来理解上面的三个注意。nFile( String pathname) nFile f=new File(“c:datatemp.dat”);nFile f=new File(“data temp.dat”);nFile f=new File(“temp.dat”);nFile( String parent, String child) nFile f=new File(“c:data” ,“temp.dat”);nFile f=new Fil
13、e(“data ” ,“ temp.dat”);nFile( File parent, String child) nFile f=new File( new File(“c:data”) ,“temp.dat”);nFile f=new File(new File(“data ”) ,“ temp.dat”);(1) File类类构造方法(构造方法(3种)种)(2) File类类文件的属性文件的属性n文件名;文件名;n路径;路径;n文件字节数(文件长度);文件字节数(文件长度);n文件最后修改时间;文件最后修改时间;n文件只读性;文件只读性;n文件隐藏性;文件隐藏性;n文件只写性;文件只写性
14、;等等等等nboolean canRead() nboolean canWrite() nboolean setReadOnly()nboolean exists() nboolean isDirectory() nboolean isFile() nboolean isHidden() nlong lastModified() nboolean setLastModified(long time)nlong length() (3) File类操作类操作方法方法n boolean createNewFile() n boolean delete() n boolean renameTo(Fi
15、le dest) nString getName() nFile getParentFile() nString getParent() nString getPath() nFile getAbsoluteFile() nString getAbsolutePath()(3) File类操作类操作方法方法(续续)3 File类应用举例例例9-21:File 类的一个简单应用,其作用是判断所指定的文件是否存在。类的一个简单应用,其作用是判断所指定的文件是否存在。 import java. io. File; public class FileDemo1 public static void m
16、ainString args) File fl new File(“c:autoexec. bat) ; File f2 = new File(“c:biology.txt”); File f3 = new File(“c:command. com); File f4 new File(“c:windows.exff) ; System.out.println(文件文件+fl.getName()+(fl.exists() ? exists :not exist) ; System.out.println(文件文件+f2.getName()+(f2.exists() ? exists :not
17、exist) ; System.out.println(文件文件+f3.getName()+(f3.exists() ? exists :not exist) ; System.out.println(文件文件+f4.getName()+(f4. exists() ? exists :not exist”) ; 例例9-22:类似于在类似于在Windows 系统的系统的dos窗口输窗口输入入dir 命令,显示当前目录的内容。命令,显示当前目录的内容。 import java.io.File; public class FileDemo2 public static void main(Stri
18、ng args) File path = new File(“.”);/表示当前目录表示当前目录 String list = path.list(); /将当前目录下的文件和子目录的信息存放到数组中将当前目录下的文件和子目录的信息存放到数组中 for( int i = 0; i list. length; i + + ) System. out. println(listi); 教材: 例9-23 例9-24 例9-25 例9-26问题: 对File类的讨论,没有涉及文件内容的处理和操作,那么,如何对文件内容进行操作呢? 对文件内容的操作,就是对文件进行读/写(输入/输出)处理。 读(写)读(
19、写)按按3个步骤进行:个步骤进行:读出或写入)读出或写入)三、三、 文件的输入与输出(文件的读写)文件的输入与输出(文件的读写)-教材教材9.4节节 有关的输入/输出流(一一) 文件文件字符字符输入输入/输出流输出流: FileReader/FileWriter(二二)字符缓冲区输入字符缓冲区输入/输出流输出流(通道通道):为了提高效率为了提高效率 BufferedReader/ BufferedWriter(三三) 文件文件字节字节输入输入/输出流输出流: FileInputStream/FileOutputStream(四四)字节缓冲区输入字节缓冲区输入/输出流输出流(通道通道):为了提高
20、效率为了提高效率 BufferedInputStream/ BufferedOutputStream(五五) 基本数据类型的读写(基本数据类型的读写( 为了读取各种数据类型)为了读取各种数据类型) DataInputStream/DataOutputStream1 文件分类文件分类根据访问文件的方式将文件分成根据访问文件的方式将文件分成2类:类: (1)文本文件)文本文件(什么是文本文件什么是文本文件?) 输入操作输入操作; 输出操作输出操作;(2)二进制文件)二进制文件(什么是二进制文件什么是二进制文件?) 输入操作输入操作; 输出操作输出操作; 2 文本文件的读写(9.4.2节)采用采用字
21、符流字符流对文本文件操作对文本文件操作n用用FileReader读文本文件读文本文件n用用FileWriter写文本文件写文本文件注意注意: 使用这两个类进行读写时,可以读写单个字符,使用这两个类进行读写时,可以读写单个字符,也可以读写一个字符串(当读写字符串时,需要用缓也可以读写一个字符串(当读写字符串时,需要用缓冲区流)冲区流)2.1 采用采用字符流字符流对文本文件对文本文件读操作读操作的基本思想与过程的基本思想与过程 (1)文件文件 (2)形成文件对象形成文件对象 (3)形成文件形成文件输入输入字符流字符流 (4)再形成再形成缓冲输入流缓冲输入流 (5)按按字符类型字符类型读出数据并存放
22、到字符类型的变量中读出数据并存放到字符类型的变量中 (6)对获取数据的变量进行加工处理对获取数据的变量进行加工处理 (7)关闭通道关闭通道(两个流都关掉两个流都关掉)读过程读过程1-引入相关的类引入相关的类使用该类是采用字符流读取信息使用该类是采用字符流读取信息 (所获取的信息就是字符串所获取的信息就是字符串).n引入相关的类 import java.io.File;import java.io.FileReader;import java.io.BufferedReader;import java.io.IOException;或:(用下面一个代替上面的4个) import java.io.
23、*读过程读过程2-创建通道(两个通道)创建通道(两个通道)构造一个构造一个BufferedReader对象对象 String s1=“mytest.txt”; File f=new File (s1);FileReader fr=new FileReader(f); BufferedReader br=new BufferedReader(fr);(1)文件文件 (2)形成文件对形成文件对象象 (3)形成文件形成文件输输入入字符流字符流(4)再形成再形成缓冲缓冲输入流输入流读过程读过程3-读取文本文件的数据读取文本文件的数据 利用利用BufferedReader的方法读取的方法读取文本文件文本
24、文件的数据的数据: 常用读取数据的方法常用读取数据的方法: (1) String S= readLine(); /读取一行数据,返回字符串读取一行数据,返回字符串, 当当S=null 表示已经读到尾表示已经读到尾 (2) int x= read(char cbuf, int off, int len) / 将字符读入数组的某一部分将字符读入数组的某一部分,方法返回值是实际读取的字符个数方法返回值是实际读取的字符个数,当返回值是当返回值是-1时时,表示已读到尾(表示已读到尾(蓝部分的参数可以省略,表示读满数组蓝部分的参数可以省略,表示读满数组) (3) int x=read() / 读取单个字符
25、读取单个字符,当返回值是当返回值是-1时时,表示已读到尾表示已读到尾方法的调用方法的调用: br.readLine(); BufferedReader 读文本文件实例读文本文件实例 /*创建一个创建一个FileReader对象对象.*/ FileReader fr=new FileReader(mytest.txt); /*创建一个创建一个BufferedReader 对象对象.*/ BufferedReader br=new BufferedReader(fr); /*读取一行数据读取一行数据.*/ String line=br.readLine(); while(line!=null) S
26、ystem.out.println(line); line=br.readLine(); /*流的关闭流的关闭.*/ br.close(); fr.close(); 创建一个 FileReader 对象 创建一个 BufferedReader对象 演示:示例 f3功能功能: 读取文件中信息读取文件中信息,并显并显示在屏幕上示在屏幕上( 每次读取文每次读取文件中的一行件中的一行)应用举例9_1: 将一个文本文件中信息输出在屏幕上,在将一个文本文件中信息输出在屏幕上,在输出时,要将小写字母输出时,要将小写字母,变换为大写字母,再变换为大写字母,再输出。输出。给出完整的设计过程及其说明给出完整的设计
27、过程及其说明:2.2 采用采用字符流字符流对文本文件对文本文件写操作写操作的基本思想与过程的基本思想与过程 (1)文件文件 (2)形成文件对象形成文件对象 (3)形成文件形成文件输出输出字符流字符流 (4)再形成缓冲再形成缓冲输出输出流流 (5)将将字符类型的变量字符类型的变量值写入文件中值写入文件中 (6)关闭通道关闭通道(两个流都关掉两个流都关掉)写过程写过程1-引入相关的类引入相关的类使用该类是采用字符流信息使用该类是采用字符流信息 (将字符将字符(串串)直接写入文件中直接写入文件中).n引入相关的类引入相关的类 import java.io.File;import java.io.Fi
28、leWriter ;import java.io. BufferedWriter ;import java.io.IOException;或或:(用下面一个代替上面的用下面一个代替上面的4个个) import java.io.*写过程写过程2-创建通道(两个通道)创建通道(两个通道) 构造一个构造一个BufferedWriter对象对象 String s1=“mytest.txt” File f=new File(s1) FileWriter fw=new FileWriter(f); BufferedWriter bw=new BufferedWriter(fw);(1)文件文件 (2)形成
29、文形成文件对象件对象 (3)形成文形成文件件输出输出字符流字符流 (4)再形成再形成缓冲输出流缓冲输出流写过程写过程3-写文本文件的数据写文本文件的数据n利用利用BufferedWriter的方法写文本文件的方法写文本文件:常用常用写数据写数据的方法的方法: void newLine() / 写入一个行分隔符(写入一个行分隔符(换行换行)。)。 void write(char cbuf, int off, int len) / 写入字符数组的某一部分(写入字符数组的某一部分(蓝部分的参数可以省略,表示全部写蓝部分的参数可以省略,表示全部写入入)。)。 void write(int c) / 写
30、入单个字符写入单个字符 void write(String s, int off, int len) / 写入字符串的某一部分(写入字符串的某一部分(蓝部分的参数可以省略,表示全部写入蓝部分的参数可以省略,表示全部写入)。)。 例如例如: bw.write (“hello”); 写过程写过程4-流对象的清空和关闭流对象的清空和关闭n相关流对象的清空和关闭bw.flush();fw.close();void close() / 关闭该流。void flush() / 刷新该流的缓冲。 用用BufferedWriter 写文本文件写文本文件 实例实例演示:示例 f4 /*创建一个创建一个FileW
31、riter 对象对象*/ FileWriter fw=new FileWriter(mytest.txt); /*创建一个创建一个BufferedWriter 对象对象*/ BufferedWriter bw=new BufferedWriter(fw); bw.write(大家好!大家好!); bw.write(我正在学习我正在学习BufferedWriter。); bw.newLine(); bw.write(请多多指教!请多多指教!); bw.newLine(); bw.write(email: studyjb-); bw.flush(); fw.close();应用举例9_2 利用利用
32、“字符流字符流”实现对文本文件的复制,但在实现对文本文件的复制,但在复制时,需要将小写字母,变换为大写字母。即:复制时,需要将小写字母,变换为大写字母。即:形成的新文件中,不含有小写字母。形成的新文件中,不含有小写字母。给出完整的设计过程及其说明给出完整的设计过程及其说明:(1)分析,给出处理步骤;(2)代码编写;例9_2的处理过程分析:(1) (1) 给出两个文件的描述给出两个文件的描述; ;(2) (2) 建立文件输入字符流建立文件输入字符流( (要有缓冲区的要有缓冲区的););(3) (3) 建立文件输出字符流建立文件输出字符流( (要有缓冲区的要有缓冲区的););(4) (4) 读文件
33、给一变量读文件给一变量( (注意注意: :读的方法选择那个读的方法选择那个););(5) (5) 当文件不到尾时当文件不到尾时, ,重复执行重复执行: : (a) (a)判定字符是小写字母吗判定字符是小写字母吗? ?如果是如果是, ,则变换则变换; ; (b) (b)将字符写入输出流中将字符写入输出流中; ; (c) (c) 继续从输入流中读信息继续从输入流中读信息; ;(6) (6) 关闭通道。关闭通道。给出代码的编写过程。给出代码的编写过程。f9_2.java思考思考: (1)读一个字读一个字符如何实现符如何实现; (2)读一个字读一个字符数组符数组,如何实现如何实现3 以字节流对文件的读
34、写操作有两组不同的读写流:有两组不同的读写流:n用用FileInputStream读文件读文件n用用FileOutputStream写文写文 (注意注意:该类也可以实现该类也可以实现文本文件文本文件的读写的读写,但稍微麻烦点,需要类型转换但稍微麻烦点,需要类型转换)n用用DataInputStream 读二进制文件读二进制文件n用用DataOutputStream 写二进制文件写二进制文件 (注意注意:上面上面4个类个类结合使用结合使用,可以实现各种可以实现各种数据类型数据类型的输入的输入/输出输出)采用字节流对文件操作采用字节流对文件操作只使用下面的类实现文件的读写只使用下面的类实现文件的读
35、写:n用用FileInputStream读文件读文件n用用FileOutputStream写文件写文件字节流字节流文件流:文件流:FileInputStream/ FileOutputStreamqFileInputStream类类: 用来打开一个输入文件,若要打开的文件不存在,则用来打开一个输入文件,若要打开的文件不存在,则会产生例外会产生例外FileNotFoundException,这是一个非运行时例,这是一个非运行时例外,必须捕获或声明抛弃外,必须捕获或声明抛弃;q FileOutputStream类类: 用来打开一个输出文件,若要打开的文件不存在,则用来打开一个输出文件,若要打开的文
36、件不存在,则会创建一个新的文件,否则原文件的内容会被新写入的内会创建一个新的文件,否则原文件的内容会被新写入的内容所覆盖。容所覆盖。q IOException类类: 在进行文件的读在进行文件的读/写操作时,会产生非运行时例外写操作时,会产生非运行时例外IOException,必须捕获或声明抛弃(其它的输入,必须捕获或声明抛弃(其它的输入/输出流处输出流处理时也同样需要进行输入理时也同样需要进行输入/输出例外处理)。输出例外处理)。 3.1 用用FileInputStream读文件读文件3.1 采用采用字节流字节流对文件对文件读操作读操作的基本思想与过程的基本思想与过程 (1)文件文件(Stri
37、ng) (2)形成文件对象形成文件对象(File) (3)形成输入文件流形成输入文件流(FileInputStream) (4)按按字节类型字节类型读出数据读出数据,并存放到并存放到字节类型字节类型的变量中的变量中 (5)对获取数据的变量进行加工处理对获取数据的变量进行加工处理 (6)关闭通道关闭通道读过程读过程1-引入相关的类引入相关的类 使用该类是采用使用该类是采用字节流字节流读取信息读取信息 (所获取的信息就是所获取的信息就是字节类型字节类型).n引入相关的类 import java.io.File;import java.io. FileInputStream;import java.
38、io.IOException;或:(用下面一个代替上面的3个) import java.io.*读过程读过程2-创建通道(创建通道(1个通道)个通道) 由上面由上面,构造一个文件输入流对象构造一个文件输入流对象(字节流字节流) String s= “text”; File f=new File(s); FileInputStream fis = new FileInputStream( f ); (1)文件文件(String) (2)形成文件对象形成文件对象(File) (3)形成输入文件流形成输入文件流(FileInputStream)文件流的构造方法文件流的构造方法: FileInputS
39、tream(File f) 打开一个以打开一个以f描述的文件作为输入。描述的文件作为输入。 FileInputStream(String name) 打开一个文件路径名为打开一个文件路径名为name的文件作为输入。的文件作为输入。读过程读过程3-读取文件的数据读取文件的数据 FileInputStream类读取文件的数据的方法类读取文件的数据的方法:(1) int read() / 从此输入流中读取一个从此输入流中读取一个数据字节数据字节 (整型整型) (2) int read(byte b) / 从此输入流中将从此输入流中将最多最多 b.length 个字节的数据读入一个个字节的数据读入一个
40、字节数组字节数组中中 ,返回实际读取字符的个数返回实际读取字符的个数(3) int read(byte b, int off, int len) / 从此输入流中将最多从此输入流中将最多 len 个字节的数据读入一个字节数组中个字节的数据读入一个字节数组中,返回实际读取字符的个数返回实际读取字符的个数 (注意注意: 对于三种读方法,当返回值是对于三种读方法,当返回值是-1时,表示读到尾时,表示读到尾)读过程读过程4-流对象关闭流对象关闭关闭文件输入流对象关闭文件输入流对象 fis.close();例9_3(读文件,并显示显示(必须是字符型必须是字符型) public static void m
41、ain(String args) throws IOException int count; File f=new File(“abc.txt”); FileInputStream fs= new FileInputStream( f ); byte text = new byte200 ; count = fs.read(text); while(count!=-1) String s=new String(text,0,count); /实现了类型转换实现了类型转换,将字节数组将字节数组,转换为字符串转换为字符串 System.out.print(s); count = fs.read(t
42、ext); fs.close(); 需要使用将二进需要使用将二进制转换为字符(串)制转换为字符(串)的方法的方法问题问题:假如读假如读一个二一个二进制文进制文件,并件,并显示在显示在屏幕上,屏幕上,会出现会出现什么情什么情况?况? 给出给出一个例一个例子!子!演示:示例 f9_33.2 用用FileOutputStream 写文件操作写文件操作3.2 采用采用字节流字节流对文件对文件写操作写操作的基本思想与过程的基本思想与过程 (1)文件文件 (2)形成文件对象形成文件对象 (3)形成文件形成文件输出输出字节流字节流 (4)将将字节类型的变量字节类型的变量值写入文件中值写入文件中 (5)关闭通
43、道关闭通道写过程写过程1-引入相关的类引入相关的类用用FileOutputStream 写文件写文件n引入相关的类 import java.io.File; import java.io.FileOutputStream; import java.io.IOException;或:(用下面一个代替上面的3个) import java.io.*写过程写过程2-创建通道创建通道(1)文件文件 (2)形成文件对象形成文件对象 (3)形成文件形成文件输出输出字节流字节流文件流的构造方法文件流的构造方法nFileOutputStream( File f ) 创建一个以创建一个以f描述的文件作为输出,文件
44、如果已经存在,描述的文件作为输出,文件如果已经存在,则其内容被清空。则其内容被清空。nFileOutputStream(String name) 创建一个文件路径名为创建一个文件路径名为name的文件作为输出,文件的文件作为输出,文件如果已经存在,则其内容被清空。如果已经存在,则其内容被清空。nFileOutputStream(String name, boolean append) 创建一个文件路径名为创建一个文件路径名为name的文件作为输出,文件的文件作为输出,文件如果已经存在,则在该输出上输出的内容被接到原有内如果已经存在,则在该输出上输出的内容被接到原有内容之后。容之后。Output
45、Stream fos = new FileOutputStream(Text.txt“,true);写过程写过程3-写文件的数据写文件的数据 利用文件输出流的方法写字节类型利用文件输出流的方法写字节类型 (如果如果变量的类型变量的类型是字符类型是字符类型,需要转换为字节型需要转换为字节型,再写入文再写入文件中件中)常用的写方法常用的写方法:(1)void write(byte b) 将将 b.length 个字节从指定的字节数组写入此输出流个字节从指定的字节数组写入此输出流。(2)void write(byte b, int off, int len) 将指定字节数组中从偏移量将指定字节数组中
46、从偏移量 off 开始的开始的 len 个字节写入此输个字节写入此输出流。出流。(3) void write(int b) 将指定的字节写入此输出流将指定的字节写入此输出流 写过程写过程4-关闭通道关闭通道 关闭文件输出流关闭文件输出流: fos.close();应用应用FileOutputStream 写文件写文件 演示:示例 f2 public static void main(String args) throws IOException String str =好好学习好好学习Java; byte words = str.getBytes(); OutputStream fos = n
47、ew FileOutputStream(Text.txt); fos.write(words, 0, words.length); System.out.println(Text文件已更新文件已更新!); fos.close(); 使用 write( ) 方法将数据写入文件类型变换类型变换按数据类型读写字节流按数据类型读写字节流4.1 DataOutputStream 写文件写文件 4.2 DataInputStream 读文件读文件 4.1 用用DataOutputStream 读文件读文件处理过程处理过程:(1)构造一个数据输出流对象构造一个数据输出流对象 FileOutputStream
48、 fos = new FileOutputStream(“Hell.class”); DataOutputStream dos = new DataOutputStream(fos);(2)利用数据输出流类的方法将数据写入文件利用数据输出流类的方法将数据写入文件 dis.writeInt(x); / 写整数写整数x dis.writeByte(y); / 写写Byte类型类型y (3)数据输出流的关闭数据输出流的关闭 dos.close (); fos.close(); /关闭数据输入流关闭数据输入流4.1 采用采用字节流字节流对文件对文件写操作写操作的基本思想与过程的基本思想与过程 (1)文
49、件文件 (2)形成文件对象形成文件对象 (3)形成文件形成文件输出输出字节流字节流 (4)再形成再形成数据输出流数据输出流 (5)按按变量的类型变量的类型,选择相应的写方法选择相应的写方法,将数据写入文件中将数据写入文件中 (7)关闭通道关闭通道(两个流都关掉两个流都关掉)写过程写过程1-引入相关的类引入相关的类使用该类是采用使用该类是采用数据类型数据类型(字节流字节流)写信息写信息n引入相关的类 import java.io.File;import java.io. FileOutputStream;import java.io. DataOutputStream;import java.i
50、o.IOException;或:(用下面一个代替上面的4个) import java.io.*写过程写过程2-创建通道(两个通道)创建通道(两个通道) 构造一个构造一个DataOutputStream对象对象 String s1=“mytest.txt”; File f=new File (s1); FileOutputStream fos=new FileOutputStream(f); DataOutputStream dos=new DataOutputStream(fos);(1)文件文件(2)形成文件对象形成文件对象(3)形成文件形成文件输入输入字节流字节流 (4)再形成再形成数据输
51、入流数据输入流写过程写过程3-写文件写文件 利用利用DataOutputStream的方法写的方法写文件文件: 常用写数据的方法常用写数据的方法: void flush() 清空此数据输出流。清空此数据输出流。 void write(byte b, int off, int len) 将指定字节数组中从偏移量将指定字节数组中从偏移量 off 开始的开始的 len 个字节写入输出流个字节写入输出流 void write(int b) 将指定字节(参数将指定字节(参数 b 的八个低位)写入输出流。的八个低位)写入输出流。 Void writeBytes(String s ) 将字符串按字节顺序写出
52、到输出流中。 Void writeChars(String s) 将字符串按字符顺序写入输出流。将字符串按字符顺序写入输出流。 void writeBoolean(v) ; void writeByte(v) ; void writeChar(v) ; void writeDouble(v) ; void writeFloat(v) ; void writeInt(v) ; void writeLong(v) ; void writeShort(v)写过程写过程4-关闭通道关闭通道(两个通道两个通道)数据输出流的关闭数据输出流的关闭 dos.close (); fos.close(); 例:f
53、9_4 将两个学生的信息,采用Data数据流,写入文件中. 学生的信息: “张三”, ”男”, 19, 98, 200.25 “李四”, ”女”, 18, 97, 210.15给出设计过程 f9_44.2 用用DataInputStream 读文件读文件处理过程处理过程:(1)构造一个数据输入流对象构造一个数据输入流对象 FileInputStream fis = new FileInputStream(“Hell.class”); DataInputStream dis = new DataInputStream(fis);(2)利用数据输入流类的方法读取二进制文件的数据利用数据输入流类的方
54、法读取二进制文件的数据 dis.readInt(); / 读取出来的是整数读取出来的是整数 dis.readByte(); / 读取出来的数据是读取出来的数据是Byte类型类型 (3)数据输入流的关闭数据输入流的关闭 dis.close (); /关闭数据输入流关闭数据输入流4.2 采用采用字节流字节流对文件对文件读操作读操作的基本思想与过程的基本思想与过程 (1)文件文件 (2)形成文件对象形成文件对象 (3)形成文件形成文件输入输入字节流字节流 (4)再形成再形成数据输入流数据输入流 (5)按按字节类型字节类型读出数据并存放到读出数据并存放到字节类型字节类型的变量中的变量中 (6)对获取数
55、据的变量进行加工处理对获取数据的变量进行加工处理 (7)关闭通道关闭通道(两个流都关掉两个流都关掉)读过程读过程1-引入相关的类引入相关的类使用该类是采用使用该类是采用字节流字节流读取信息读取信息 (所获取的信息就是所获取的信息就是字节类型字节类型)n引入相关的类 import java.io.File;import java.io. FileInputStream;import java.io. DataInputStream;import java.io.IOException;或:(用下面一个代替上面的4个) import java.io.*读过程读过程2-创建通道(两个通道)创建通道(
56、两个通道)构造一个构造一个DataInputStream对象对象 String s1=“mytest.txt”; File f=new File (s1);FileInputStream fs=new FileInputStream(f); DataInputStream dis=new DataInputStream(fs);(1)文件文件 (2)形成文形成文件对象件对象 (3)形成文形成文件件输入输入字节流字节流 (4)再形成再形成数据输入流数据输入流读过程读过程3-读取文件的数据读取文件的数据 利用利用DataInputStream的方法读取的方法读取文件文件的数据的数据: 常用读取数据
57、的方法常用读取数据的方法: int read(byte b) 从所包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组从所包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组 b 中中 int read(byte b, int off, int len) 从所包含的输入流中将从所包含的输入流中将 len 个字节读入一个字节数组中个字节读入一个字节数组中 boolean readBoolean() ; byte readByte() ; char readChar() ; double readDouble() ; float readFloat() ; int readInt()
58、; long readLong() ; short readShort()注意注意: 所读取所读取数据数据的方法的方法,所读取所读取的数据的数据,必须是必须是由由Data数据流数据流写入写入文件中的文件中的.给出设计过程 f9_5(读取f9_4程序生成的文件,并显示)应用应用DataOutputStream 读写文件读写文件 FileInputStream fis = new FileInputStream(RFile.class);DataInputStream dis = new DataInputStream(fis);FileOutputStream outFile = new Fil
59、eOutputStream(temp.class);DataOutputStream out = new DataOutputStream(outFile);int temp;while ( (temp = dis.read() != -1) out.write(temp); fis.close();out.close();演示:示例f55 键盘输入数据 键盘输入信息键盘输入信息,由字节型开始由字节型开始,最后获得的是字符流最后获得的是字符流(字符串字符串).其处理过程是其处理过程是: (1)键盘设备是字节流文件键盘设备是字节流文件(标准输入对象标准输入对象:System.in); (2)需要
60、一个由字节流转换为字符流的一种流需要一个由字节流转换为字符流的一种流(桥桥); (3) 为了提高处理效率为了提高处理效率,需要字符型缓冲流需要字符型缓冲流, (4)形成字符流形成字符流(字符串字符串); (5)由字符串由字符串,利用类型转换利用类型转换,提供给相应类型的变量提供给相应类型的变量.注意注意:每一步需要什么类每一步需要什么类,需要什么方法需要什么方法?第一步:导入包类需要的类: InputStream (对于键盘是一个标准输入字节流对象标准输入字节流对象:System.in) InputStreamReader BufferedReader第二步:建立通道: InputStream
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年汽车冷却风扇项目发展计划
- 2019-2025年初级管理会计之专业知识综合卷押题练习试题A卷含答案
- 2019-2025年一级注册建筑师之建筑技术设计作图题模拟题库及答案下载
- 2025年中国富马酸比索洛尔项目投资计划书
- 狗狗课件教学课件
- 2025年全断面掘进机项目发展计划
- 某品牌展示设计案例分析
- 肥城农机考试试题及答案
- 幼师培训考试试题及答案
- 地税专业考试试题及答案
- xx学校研学旅行活动告家长书
- 医院检验科实验室生物安全管理委员会及工作职责
- 艾里逊自动变速箱针脚图PPT通用课件
- 圣地非遗-鲁锦纹样特征
- 自动扶梯标准安装施工方案
- 化探取样规范
- 起重机械交叉作业安全措施
- MBR运行管理手册(共21页)
- 生态动力素讲解话术
- 五年级家长会英语老师发言课件.ppt
- Oracle-BI安装及使用指南(linux)(精编版)
评论
0/150
提交评论