版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Java Java 程序设计程序设计单元五:单元五:JavaJava语言高级程序设计语言高级程序设计 Java Java 程序设计程序设计 知识目标 掌握文件读写各种类型流的使用。 能力目标 能够使用文件字节流常用类。 能够使用文件字符流常用类。 Java Java 程序设计程序设计4任务陈述任务陈述123知识准备知识准备任务实施任务实施任务拓展任务拓展任务实训任务实训5 Java Java 程序设计程序设计任务描述:任务描述: Java源程序添加行号。编写一个程序将源文件另存为其他的文件,并为每一行代码在前面添加行号。 1. 任务陈述任务陈述 Java Java 程序设计程序设计 2. 知
2、识准备知识准备 File类不负责文件的读写。类不负责文件的读写。Java中文件读写是通中文件读写是通过流的形式完成的。过流的形式完成的。通过流能使我们能自由地控制通过流能使我们能自由地控制包括文件,内存,包括文件,内存,IO设备等等中的数据的流向。设备等等中的数据的流向。 如:可以从文件输入流中获取数据,经处理后再通过网络输如:可以从文件输入流中获取数据,经处理后再通过网络输出流把数据输出到网络设备上;或利用对像输出流把一个程出流把数据输出到网络设备上;或利用对像输出流把一个程序中的对象输出到一个格式流文件中,并通过网络流对象将序中的对象输出到一个格式流文件中,并通过网络流对象将其输出到远程机
3、器上,然后在远程机器上利用对象输入流将其输出到远程机器上,然后在远程机器上利用对象输入流将对象还原。对象还原。 Java Java 程序设计程序设计 2. 知识准备知识准备流的分类流的分类 流在流在JavaJava中是指计算机中流动的缓冲区。中是指计算机中流动的缓冲区。从外设从外设备流向中央处理器的数据流成为备流向中央处理器的数据流成为“输入流输入流”,反之,反之成为输出流。成为输出流。Java.ioJava.io包提供处理不同类型的流类,包提供处理不同类型的流类,有字节流、字符流、文件流和对象流等。其中,字有字节流、字符流、文件流和对象流等。其中,字节流类名以节流类名以StreamStrea
4、m结尾,字符流类名以结尾,字符流类名以ReaderReader或或WriterWriter结尾;按数据流动的方向分为输入流(来源结尾;按数据流动的方向分为输入流(来源流)和输出流(接收流),输入流类名以流)和输出流(接收流),输入流类名以InIn开始,开始,输出流类名以输出流类名以OutOut开始。开始。 Java Java 程序设计程序设计 2. 知识准备知识准备uInputStreamInputStream是抽象类,所有字是抽象类,所有字节输入流类都直接或间接继承此类。节输入流类都直接或间接继承此类。InputStreamInputStream类的常用方法包括:类的常用方法包括:uint
5、available() int available() 返回此输入流返回此输入流方法的下一个调用方可以不受阻塞方法的下一个调用方可以不受阻塞地从此输入流读取(或跳过)的字地从此输入流读取(或跳过)的字节数。节数。uvoid close() void close() 关闭此输入流并关闭此输入流并释放与该流关联的所有系统资源。释放与该流关联的所有系统资源。uabstract abstract int read() int read() 从输入从输入流读取下一个数据字节。流读取下一个数据字节。uint read(byteint read(byte b) b) 从输入流从输入流中读取一定数量的字节并将
6、其存储中读取一定数量的字节并将其存储在缓冲区数组在缓冲区数组 b b 中。中。5.6 字节流字节流InputStream和和OutputStream是字节流的两个顶层父类,提供了输入流类是字节流的两个顶层父类,提供了输入流类与输出流类的通用与输出流类的通用API。 Java Java 程序设计程序设计 2. 知识准备知识准备 字节输入流类很多,这里重点介绍字节输入流类很多,这里重点介绍FileInputStreamFileInputStream、BufferedInputStreamBufferedInputStream和和DataInputStreamDataInputStream File
7、InputStreamFileInputStream:此类用于从本地文件系统中读取文件内容。构造方法:构造方法:uFileInputStream(File file):FileInputStream(File file):通过打开一个到实际文件的连通过打开一个到实际文件的连接来创建一个接来创建一个 FileInputStreamFileInputStream,该文件通过文件系统中的,该文件通过文件系统中的 File File 对象对象 file file 指定。指定。 uFileInputStream(String name):FileInputStream(String name):通过打开
8、一个到实际文件的通过打开一个到实际文件的连接来创建一个连接来创建一个 FileInputStreamFileInputStream,该文件通过文件系统中的路,该文件通过文件系统中的路径名径名 name name 指定。指定。常用方法:常用方法:uint int availableavailable()():返回下一次对此输入流调用的方法可以不受返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取(或跳过)的估计剩余字节数。阻塞地从此输入流读取(或跳过)的估计剩余字节数。 uvoid void close():close():关闭此文件输入流并释放与此流有关的所有系统关闭此文件输入流并释放
9、与此流有关的所有系统资源。资源。 Java Java 程序设计程序设计 2. 知识准备知识准备BufferedInputStream:此类本身带有一个缓冲区,在读取数:此类本身带有一个缓冲区,在读取数据时,先放到缓冲区中,可以减少对数据源的访问,提高运据时,先放到缓冲区中,可以减少对数据源的访问,提高运行的效率。行的效率。构造方法:构造方法:vBufferedInputStream(InputStream in):创建一个创建一个 BufferedInputStream 并保存其参数,即输入流并保存其参数,即输入流 in,以便将来使用。,以便将来使用。 vBufferedInputStream
10、(InputStream in, int size):创建具有指定缓冲区大小创建具有指定缓冲区大小的的 BufferedInputStream 并保存其参数,即输入流并保存其参数,即输入流 in,以便将来使用。,以便将来使用。 常用方法:常用方法:vint available():返回可以从此输入流读取(或跳过)、且不受此输入流接返回可以从此输入流读取(或跳过)、且不受此输入流接下来的方法调用阻塞的估计字节数。下来的方法调用阻塞的估计字节数。 vvoid close():关闭此输入流并释放与该流关联的所有系统资源。关闭此输入流并释放与该流关联的所有系统资源。 vint read():从输入流中
11、读取数据的下一个字节。从输入流中读取数据的下一个字节。 vint read(byte b, int off, int len):从此字节输入流中给定偏移量处开始将从此字节输入流中给定偏移量处开始将各字节读取到指定的各字节读取到指定的 byte 数组中。数组中。 Java Java 程序设计程序设计 2. 知识准备知识准备DataInputStream:此类提供一些基于多字节读取方法,从而可:此类提供一些基于多字节读取方法,从而可以读取基本数据类型的数据。以读取基本数据类型的数据。构造方法:构造方法:DataInputStream(InputStream in) :使用指定的底层使用指定的底层
12、InputStream 创建一个创建一个DataInputStream。常用方法:常用方法: int read(byte b) :从包含的输入流中读取一定数量的字节,:从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组并将它们存储到缓冲区数组 b 中。中。 int read(byte b, int off, int len) :从包含的输入流中将最多:从包含的输入流中将最多 len 个字节读入一个个字节读入一个 byte 数组中。数组中。 【例【例5-6】通过文件读写实现文件复制。实现了从】通过文件读写实现文件复制。实现了从c:/temp.txt文文件读取数据,并写入到件读取数据,并
13、写入到c:/temp1.txt文件中去的功能。程序运行文件中去的功能。程序运行时文件时文件c:/temp.txt必须要先存在。必须要先存在。BufferedReaderExample.java Java Java 程序设计程序设计 2. 知识准备知识准备5.6.2 outputStream字节流字节流 OutputStream是抽象类,所有字节输出流类都直接或间是抽象类,所有字节输出流类都直接或间接继承此类。接继承此类。OutputStream的子类必须始终提供至少一种可的子类必须始终提供至少一种可写入一个输出字节的方法。写入一个输出字节的方法。 Java Java 程序设计程序设计 2. 知
14、识准备知识准备OutputStream的常用方法包括:的常用方法包括:uvoid close() 关闭此输出流并释放与此流有关的所关闭此输出流并释放与此流有关的所有系统资源。有系统资源。uvoid flush() 刷新此输出流并强制写出所有缓冲的刷新此输出流并强制写出所有缓冲的输出字节。输出字节。uvoid write(byte b) 将将 b.length 个字节从指定的字个字节从指定的字节数组写入此输出流。节数组写入此输出流。uvoid write(byte b, int off, int len) 将指定字节数将指定字节数组中从偏移量组中从偏移量 off 开始的开始的 len 个字节写入
15、此输出流。个字节写入此输出流。uabstract void write(int b) 将指定的字节写入此输将指定的字节写入此输出流。出流。 Java Java 程序设计程序设计 2. 知识准备知识准备字节输出流类很多,这里重点介绍如下字节输出流类很多,这里重点介绍如下3种:种:uFileOutputStream:此类用于从本地文件系统的文件中写入数据。:此类用于从本地文件系统的文件中写入数据。构造方法:构造方法:uFileOutputStream(File file) :创建一个向指定:创建一个向指定 File 对象表示的文对象表示的文件中写入数据的文件输出流。件中写入数据的文件输出流。uFi
16、leOutputStream(String name) :创建一个向具有指定名称的文:创建一个向具有指定名称的文件中写入数据的输出文件流。件中写入数据的输出文件流。常用方法:常用方法:uvoid close():关闭此文件输出流并释放与此流有关的所有系统资源。关闭此文件输出流并释放与此流有关的所有系统资源。 uFileDescriptor getFD():返回与此流有关的文件描述符。返回与此流有关的文件描述符。 uvoid write(byte b):将将 b.length 个字节从指定个字节从指定 byte 数组写入此文数组写入此文件输出流中。件输出流中。 uvoid write(byte
17、b, int off, int len):将指定将指定 byte 数组中从偏移量数组中从偏移量 off 开始的开始的 len 个字节写入此文件输出流。个字节写入此文件输出流。 uvoid write(int b):将指定字节写入此文件输出流。将指定字节写入此文件输出流。 Java Java 程序设计程序设计 2. 知识准备知识准备 BufferedOutputStream:此类本身带有一个缓冲区,在:此类本身带有一个缓冲区,在写取数据时,先放到缓冲区中,实现缓冲的数据流。写取数据时,先放到缓冲区中,实现缓冲的数据流。构造方法:构造方法:uBufferedOutputStream(OutputS
18、tream out) :创建一个新的:创建一个新的缓冲输出流,以将数据写入指定的底层输出流。缓冲输出流,以将数据写入指定的底层输出流。 uBufferedOutputStream(OutputStream out, int size):创建:创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。指定的底层输出流。 常用方法:常用方法:uvoid flush():刷新此缓冲的输出流。刷新此缓冲的输出流。 uvoid write(byte b, int off, int len):将指定将指定 byte 数组中从偏数组中从偏移
19、量移量 off 开始的开始的 len 个字节写入此缓冲的输出流。个字节写入此缓冲的输出流。 uvoid write(int b):将指定的字节写入此缓冲的输出流。将指定的字节写入此缓冲的输出流。 Java Java 程序设计程序设计 2. 知识准备知识准备 DataOutputStream(OutputStream out) :创建一个新的:创建一个新的数据输出流,将数据写入指定基础输出流。数据输出流,将数据写入指定基础输出流。常用方法:常用方法:u void flush() :清空此数据输出流。:清空此数据输出流。 u int size() :返回计数器:返回计数器 written 的当前值
20、,即到目前为止写的当前值,即到目前为止写入此数据输出流的字节数。入此数据输出流的字节数。 u void write(byte b, int off, int len):将指定:将指定 byte 数组中从数组中从偏移量偏移量 off 开始的开始的 len 个字节写入基础输出流。个字节写入基础输出流。 u void write(int b):将指定字节(参数:将指定字节(参数 b 的八个低位)写入的八个低位)写入基础输出流。基础输出流。 【例例5-7】将用户输入保存到文件中。其功能是:从控制台输入将用户输入保存到文件中。其功能是:从控制台输入50个字节个字节的数据,输出到的数据,输出到C盘盘wri
21、te.txt文件中,读取文件中,读取write.txt文件中的内容,输出到文件中的内容,输出到调试窗口中。调试窗口中。ReadWriteFile.java Java Java 程序设计程序设计 2. 知识准备知识准备5.7 5.7 字符流字符流 ReaderReader和和WriterWriter是是java.iojava.io包中的两个字符流类的顶层包中的两个字符流类的顶层抽象父类,定义了在抽象父类,定义了在I/OI/O流中读写字符数据的通用流中读写字符数据的通用APIAPI。在。在JavaJava中字符采用是中字符采用是UnicodeUnicode字符编码。常见字符输入字符编码。常见字符输
22、入/ /输出流输出流是由是由ReaderReader和和WriterWriter抽象类派生出来的。处理数据时是以字抽象类派生出来的。处理数据时是以字符为基本单位的。符为基本单位的。 Java Java 程序设计程序设计 2. 知识准备知识准备 FileReader FileReader:用来读取字符文件的便捷类。此类的构造方法:用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。假定默认字符编码和默认字节缓冲区大小都是适当的。其构造方法有如下其构造方法有如下2 2种:种:uFileReader(File file) FileReader(File file)
23、 :在给定从中读取数据的:在给定从中读取数据的 File File 的情的情况下创建一个新况下创建一个新 FileReaderFileReader。 uFileReader(String fileName) FileReader(String fileName) :在给定从中读取数据的文件:在给定从中读取数据的文件名的情况下创建一个新名的情况下创建一个新 FileReaderFileReader。 BufferedReaderBufferedReader类是类是ReaderReader类的子类,为类的子类,为Reader Reader 对象添加字符对象添加字符缓冲器,为数据输入分配内存存储空间
24、,存取数据更为有效。缓冲器,为数据输入分配内存存储空间,存取数据更为有效。其构造方法有如下其构造方法有如下2 2种:种:uBufferedReader(Reader in) BufferedReader(Reader in) :创建一个使用默认大小输入缓:创建一个使用默认大小输入缓冲区的缓冲字符输入流。冲区的缓冲字符输入流。 uBufferedReader(Reader in, int sz) BufferedReader(Reader in, int sz) : 创建一个使用指定创建一个使用指定大小输入缓冲区的缓冲字符输入流。大小输入缓冲区的缓冲字符输入流。 Java Java 程序设计程序
25、设计 2. 知识准备知识准备其操作方法有:其操作方法有:u void close():void close():关闭该流并释放与之关联的所有资源。关闭该流并释放与之关联的所有资源。 u void mark(int readAheadLimit):void mark(int readAheadLimit):标记流中的当前位置。标记流中的当前位置。 u boolean markSupported():boolean markSupported():判断此流是否支持判断此流是否支持 mark() mark() 操作(它一定支持)。操作(它一定支持)。 u i int read():nt read()
26、:读取单个字符。读取单个字符。 u int read(char cbuf, int off, int len):int read(char cbuf, int off, int len):将字符读将字符读入数组的某一部分。入数组的某一部分。 u String readLine():String readLine():读取一个文本行。读取一个文本行。 u boolean ready():boolean ready():判断此流是否已准备好被读取。判断此流是否已准备好被读取。 u void reset()void reset(): :将流重置到最新的标记。将流重置到最新的标记。 u long sk
27、ip(long n)long skip(long n): :跳过字符。跳过字符。 Java Java 程序设计程序设计 2. 知识准备知识准备5.7.2 Writer类WriterWriter写入字符类型写入字符类型 Java Java 程序设计程序设计 2. 知识准备知识准备字符输出流类很多,这里重点介绍字符输出流类很多,这里重点介绍FileWriterFileWriter和和BufferedWriterBufferedWriter:FileWriterFileWriter:用来写入字符文件的便捷类。:用来写入字符文件的便捷类。FileWriter FileWriter 用于写入字符流。要写
28、入原始字用于写入字符流。要写入原始字节流。节流。其构造方法有如下其构造方法有如下2 2种:种:uFileWriter(File file):FileWriter(File file):根据给定的根据给定的 File File 对象构造一个对象构造一个 FileWriter FileWriter 对象。对象。uFileWriter(String fileName):FileWriter(String fileName):根据给定的根据给定的文件名构造一个文件名构造一个 FileWriter FileWriter 对象。对象。 Java Java 程序设计程序设计uBufferedWriter:将
29、文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer。u【例5-8】带缓冲的字符流使用示例。ReaderWriter.java Java Java 程序设计程序设计 3. 任务实施任务实施 使用使用BufferedReaderBufferedReader从文件中逐行读入从文件中逐行读入JavaJava源文件中的代源文件中的代码,在每行代码前加上行号后,使用码,在每行代码前加上行
30、号后,使用PrintWriterPrintWriter逐行将代码逐行将代码写入新文件。写入新文件。(1)(1)定义类定义类InsertLineNumberInsertLineNumber。(2)(2)编写编写openopen方法,将源代码文件内容读入字符串方法,将源代码文件内容读入字符串strFinalstrFinal对象对象中中。(3)(3)编写编写saveAssaveAs方法,从方法,从strFinalstrFinal对象中逐行读出代码,增加行对象中逐行读出代码,增加行号并写入新文件中号并写入新文件中。(4)(4)在在mainmain方法中创建方法中创建InsertLineNumberIn
31、sertLineNumber类对象,调用类对象,调用openopen、saveAssaveAs方法方法。 Java Java 程序设计程序设计public void open(String fileName)tryBufferedReader in = new BufferedReader(new FileReader(fileName);while(strTemp = in.readLine()!= null)strFinal = strFinal + strTemp + n;in.close();catch(IOException e)System.out.println(e); Java
32、 Java 程序设计程序设计public void saveAs(String fileName)tryBufferedReader in = new BufferedReader (new StringReader(strFinal);PrintWriter out = new PrintWriter (new BufferedWriter(new FileWriter(fileName);int lineCount = 1;while(strTemp = in.readLine()!= null)out.println(lineCount+ + : + strTemp);in.close(
33、);out.close();catch(IOException e) System.out.println(e); Java Java 程序设计程序设计public static void main(String args) throws IOExceptionInsertLineNumber obj = new InsertLineNumber();obj.open(E:/EclipseWorkspace/task1/src/com/task25/FileIO.java);obj.saveAs(d:FileIO.txt); Java Java 程序设计程序设计4. 任务拓展任务拓展对象流对象流ObjectInputStream和和ObjectOutputStream可可以将以将Java对象输入、输出,对象输入、输出,例如:将对象保存到文件例如:将对象保存到文件,实现对象数据的持久化。,实现对象数据的持久化。ObjectInputStream主要方法主要方法 Object readObject()负责读入一个对象,读入后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 苏州科技大学天平学院《文创艺术设计》2022-2023学年第一学期期末试卷
- 固体饮料行业的营销推广方案考核试卷
- 危险品运输中的冷链与温控技术考核试卷
- 《房地产客户开发》课件
- 2024标准版附期限借款合同范文
- 搪瓷制品在农业生产中的应用与推广方案考核试卷
- 安装自来水管合同5篇
- 尼龙纤维的性能与应用考核试卷
- 2024商标质押登记是否商标专用权质押合同
- 塑料制品在洗护用品制造中的应用考核试卷
- 办公楼装饰装修工程施工组织设计方案
- 2024年二手物品寄售合同
- 2023年辽阳宏伟区龙鼎山社区卫生服务中心招聘工作人员考试真题
- 三年级数学(上)计算题专项练习附答案集锦
- 高一期中家长会班级基本情况打算和措施模板
- 历史期中复习课件七年级上册复习课件(部编版2024)
- 专题7.2 空间点、直线、平面之间的位置关系(举一反三)(新高考专用)(学生版) 2025年高考数学一轮复习专练(新高考专用)
- 7.2.2 先天性行为和学习行为练习 同步练习
- 2024-2025学年八年级物理上册 4.2光的反射说课稿(新版)新人教版
- 《现代管理原理》章节测试参考答案
- 电子元器件有效贮存期、超期复验及装机前的筛选要求
评论
0/150
提交评论