已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务二 Java源程序行号添加程序设计 单元五 Java语言高级程序设计 教学目标 知识目标掌握文件读写各种类型流的使用 能力目标能够使用文件字节流常用类 能够使用文件字符流常用类 教学内容 4 任务陈述 1 2 3 知识准备 任务实施 任务拓展 任务实训 5 任务描述 Java源程序添加行号 编写一个程序将源文件另存为其他的文件 并为每一行代码在前面添加行号 1 任务陈述 2 知识准备 File类不负责文件的读写 Java中文件读写是通过流的形式完成的 通过流能使我们能自由地控制包括文件 内存 IO设备等等中的数据的流向 如 可以从文件输入流中获取数据 经处理后再通过网络输出流把数据输出到网络设备上 或利用对像输出流把一个程序中的对象输出到一个格式流文件中 并通过网络流对象将其输出到远程机器上 然后在远程机器上利用对象输入流将对象还原 2 知识准备 流的分类流在Java中是指计算机中流动的缓冲区 从外设备流向中央处理器的数据流成为 输入流 反之成为输出流 Java io包提供处理不同类型的流类 有字节流 字符流 文件流和对象流等 其中 字节流类名以Stream结尾 字符流类名以Reader或Writer结尾 按数据流动的方向分为输入流 来源流 和输出流 接收流 输入流类名以In开始 输出流类名以Out开始 2 知识准备 InputStream是抽象类 所有字节输入流类都直接或间接继承此类 InputStream类的常用方法包括 intavailable 返回此输入流方法的下一个调用方可以不受阻塞地从此输入流读取 或跳过 的字节数 voidclose 关闭此输入流并释放与该流关联的所有系统资源 abstractintread 从输入流读取下一个数据字节 intread byte b 从输入流中读取一定数量的字节并将其存储在缓冲区数组b中 5 6字节流InputStream和OutputStream是字节流的两个顶层父类 提供了输入流类与输出流类的通用API 2 知识准备 字节输入流类很多 这里重点介绍FileInputStream BufferedInputStream和DataInputStreamFileInputStream 此类用于从本地文件系统中读取文件内容 构造方法 FileInputStream Filefile 通过打开一个到实际文件的连接来创建一个FileInputStream 该文件通过文件系统中的File对象file指定 FileInputStream Stringname 通过打开一个到实际文件的连接来创建一个FileInputStream 该文件通过文件系统中的路径名name指定 常用方法 intavailable 返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取 或跳过 的估计剩余字节数 voidclose 关闭此文件输入流并释放与此流有关的所有系统资源 2 知识准备 BufferedInputStream 此类本身带有一个缓冲区 在读取数据时 先放到缓冲区中 可以减少对数据源的访问 提高运行的效率 构造方法 BufferedInputStream InputStreamin 创建一个BufferedInputStream并保存其参数 即输入流in 以便将来使用 BufferedInputStream InputStreamin intsize 创建具有指定缓冲区大小的BufferedInputStream并保存其参数 即输入流in 以便将来使用 常用方法 intavailable 返回可以从此输入流读取 或跳过 且不受此输入流接下来的方法调用阻塞的估计字节数 voidclose 关闭此输入流并释放与该流关联的所有系统资源 intread 从输入流中读取数据的下一个字节 intread byte b intoff intlen 从此字节输入流中给定偏移量处开始将各字节读取到指定的byte数组中 2 知识准备 DataInputStream 此类提供一些基于多字节读取方法 从而可以读取基本数据类型的数据 构造方法 DataInputStream InputStreamin 使用指定的底层InputStream创建一个DataInputStream 常用方法 intread byte b 从包含的输入流中读取一定数量的字节 并将它们存储到缓冲区数组b中 intread byte b intoff intlen 从包含的输入流中将最多len个字节读入一个byte数组中 例5 6 通过文件读写实现文件复制 实现了从c temp txt文件读取数据 并写入到c temp1 txt文件中去的功能 程序运行时文件c temp txt必须要先存在 BufferedReaderExample java 2 知识准备 5 6 2outputStream字节流OutputStream是抽象类 所有字节输出流类都直接或间接继承此类 OutputStream的子类必须始终提供至少一种可写入一个输出字节的方法 2 知识准备 OutputStream的常用方法包括 voidclose 关闭此输出流并释放与此流有关的所有系统资源 voidflush 刷新此输出流并强制写出所有缓冲的输出字节 voidwrite byte b 将b length个字节从指定的字节数组写入此输出流 voidwrite byte b intoff intlen 将指定字节数组中从偏移量off开始的len个字节写入此输出流 abstractvoidwrite intb 将指定的字节写入此输出流 2 知识准备 字节输出流类很多 这里重点介绍如下3种 FileOutputStream 此类用于从本地文件系统的文件中写入数据 构造方法 FileOutputStream Filefile 创建一个向指定File对象表示的文件中写入数据的文件输出流 FileOutputStream Stringname 创建一个向具有指定名称的文件中写入数据的输出文件流 常用方法 voidclose 关闭此文件输出流并释放与此流有关的所有系统资源 FileDescriptorgetFD 返回与此流有关的文件描述符 voidwrite byte b 将b length个字节从指定byte数组写入此文件输出流中 voidwrite byte b intoff intlen 将指定byte数组中从偏移量off开始的len个字节写入此文件输出流 voidwrite intb 将指定字节写入此文件输出流 2 知识准备 BufferedOutputStream 此类本身带有一个缓冲区 在写取数据时 先放到缓冲区中 实现缓冲的数据流 构造方法 BufferedOutputStream OutputStreamout 创建一个新的缓冲输出流 以将数据写入指定的底层输出流 BufferedOutputStream OutputStreamout intsize 创建一个新的缓冲输出流 以将具有指定缓冲区大小的数据写入指定的底层输出流 常用方法 voidflush 刷新此缓冲的输出流 voidwrite byte b intoff intlen 将指定byte数组中从偏移量off开始的len个字节写入此缓冲的输出流 voidwrite intb 将指定的字节写入此缓冲的输出流 2 知识准备 DataOutputStream OutputStreamout 创建一个新的数据输出流 将数据写入指定基础输出流 常用方法 voidflush 清空此数据输出流 intsize 返回计数器written的当前值 即到目前为止写入此数据输出流的字节数 voidwrite byte b intoff intlen 将指定byte数组中从偏移量off开始的len个字节写入基础输出流 voidwrite intb 将指定字节 参数b的八个低位 写入基础输出流 例5 7 将用户输入保存到文件中 其功能是 从控制台输入50个字节的数据 输出到C盘write txt文件中 读取write txt文件中的内容 输出到调试窗口中 ReadWriteFile java 2 知识准备 5 7字符流Reader和Writer是java io包中的两个字符流类的顶层抽象父类 定义了在I O流中读写字符数据的通用API 在Java中字符采用是Unicode字符编码 常见字符输入 输出流是由Reader和Writer抽象类派生出来的 处理数据时是以字符为基本单位的 2 知识准备 FileReader 用来读取字符文件的便捷类 此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的 其构造方法有如下2种 FileReader Filefile 在给定从中读取数据的File的情况下创建一个新FileReader FileReader StringfileName 在给定从中读取数据的文件名的情况下创建一个新FileReader BufferedReader类是Reader类的子类 为Reader对象添加字符缓冲器 为数据输入分配内存存储空间 存取数据更为有效 其构造方法有如下2种 BufferedReader Readerin 创建一个使用默认大小输入缓冲区的缓冲字符输入流 BufferedReader Readerin intsz 创建一个使用指定大小输入缓冲区的缓冲字符输入流 2 知识准备 其操作方法有 voidclose 关闭该流并释放与之关联的所有资源 voidmark intreadAheadLimit 标记流中的当前位置 booleanmarkSupported 判断此流是否支持mark 操作 它一定支持 intread 读取单个字符 intread char cbuf intoff intlen 将字符读入数组的某一部分 StringreadLine 读取一个文本行 booleanready 判断此流是否已准备好被读取 voidreset 将流重置到最新的标记 longskip longn 跳过字符 2 知识准备 5 7 2Writer类Writer写入字符类型 2 知识准备 字符输出流类很多 这里重点介绍FileWriter和BufferedWriter FileWriter 用来写入字符文件的便捷类 FileWriter用于写入字符流 要写入原始字节流 其构造方法有如下2种 FileWriter Filefile 根据给定的File对象构造一个FileWriter对象 FileWriter StringfileName 根据给定的文件名构造一个FileWriter对象 BufferedWriter 将文本写入字符输出流 缓冲各个字符 从而提供单个字符 数组和字符串的高效写入 可以指定缓冲区的大小 或者接受默认的大小 在大多数情况下 默认值就足够大了 除非要求提示输出 否则建议用BufferedWriter包装所有其write 操作可能开销很高的Writer 例5 8 带缓冲的字符流使用示例 ReaderWriter java 3 任务实施 使用BufferedReader从文件中逐行读入Java源文件中的代码 在每行代码前加上行号后 使用PrintWriter逐行将代码写入新文件 1 定义类InsertLineNumber 2 编写open方法 将源代码文件内容读入字符串strFinal对象中 3 编写saveAs方法 从strFinal对象中逐行读出代码 增加行号并写入新文件中 4 在main方法中创建InsertLineNumber类对象 调用open saveAs方法 publicvoidopen StringfileName try BufferedReaderin newBufferedReader newFileReader fileName while strTemp in readLine null strFinal strFinal strTemp n in close catch IOExceptione System out println e publicvoidsaveAs StringfileName try BufferedReaderin newBufferedReader newStringReader strFinal PrintWriterout newPrintWriter newBufferedWriter newFileWriter fileName intlineCount 1 while strTemp in readLine null out println lineCount strTemp in close out close catch IOExceptione System out println e publicstaticvoidmain Stringargs throwsIOException InsertLineNumberobj newInsertLineNumber obj open E EclipseWorkspace task1 src com task25 FileIO java obj saveAs d FileIO txt 4 任务拓展 对象流ObjectInputStream和ObjectOutputStream可以将Java对象输入 输出 例如 将对象保存到文件 实现对象数据的持久化 ObjectInputStream主要方法ObjectreadObject 负责读入一个对象 读入后类型为Object 需要通过强制类型转换恢复原类型 ObjectOutputStream主要方法voidwriteObject Objectobj 负责写出一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论