已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章对文件的读写 教授 郭磊 本章导读 数据流 所谓流 就是指数据从数据源传输到目的地的一种序列 数据流分为输入流和输出流两种 因为流是有方向性的 所以当数据需要被从什么地方引入的时候 我们要使用输出流把他们引导出来 同样的 当我们要把数据写入到什么地方的时候需要用输入流将他们引入目的地 Java的I O流库提供了大量的流类 存在包java io中 其中有4个重要的类 InputStream 字节输入流 Reader 字符输入流 OutputStream 字节输出流 和Writer 字符输出流 InputStreeam和Reader类为其子类提供了重要的读取数据的read 方法 OutputStream和Writer类为其子类提供了重要的写入数据的write 方法 Java中的输入 输出流由于处理对象的不同分为字节流和字符流两种 字节流 bytestream 为处理字节的输入和输出提供了方便的方法 字符流 characterstream 为字符的输入和输出提供了方便 它们采用了统一的编码标准 因而可以国际化 当然 在某些场合字符流比字节流更有效 本章介绍了Java数据流的概念 InputStream OutputStream Reader Writer和File类 以及对文件的管理 本章要点 InputStream类与OutputStream类Reader类与Writer类文件的管理 6 1InputStream类与OutputStream类 InputStream类与OutputStream类属于字节流 是抽象类 在使用的时候必须先建立实体对象 关于输入和输出流的定义和继承的方法 表6 1继承InputStream的方法方法功能1 intavailable 返回当前输入流可以读取的字符个数2 voidclose 关闭输入流voidmark 在输入流的当前位置做标记3 BooleanmarkSupported 判断当前流是否支持标记4 abstractintread 读取一个字节的数据5 intread byte b 读取若干字节的数据 并将结果返回到字节数组b中I6 ntread byte b intoff intlen 读取若干字节的数据 并将结果返回到字节数组b中 off为读取开始位置 len为读取的字节个数voidreset 返回上一个标记 用于从该标记位置读取数据longskip longn 在输入流中跳过几个字节 6 1InputStream类与OutputStream类 继承OutputStream的方法方法功能1 voidclose 关闭输出流2 voidflush 输出缓冲区刷新3 voidwrite byte b 向输出流写出字节序列4 bvoidwrite byte b intoff intlen 向输出流写出字节序列b off是写入开始位置 len为写入的字节个数abstractvoidwrite intb 写出一个字节的数据 6 2Reader类与Writer类 Reader类和Writer类属于字符流 也是抽象类 调用之时要首先创建实体对象 Reader类的继承方法方法功能1 abstractvoidclose 关闭输入流2 voidmark 在输入流的当前位置做标记3 booleanmarkSupported 判断当前流是否支持标记4 intread 读取一个字节的数据5 initread char cbuf 读取若干字节的数据 并将结果返回到字节数组cbuf中abstractintread char cbuf intoff intlen 读取若干字节的数据 并将结果返回到字节数组cbuf中 off为读取开始位置 len为读取的字节个数booleanready 判断该流是否准备好voidreset 返回上一个标记 用于从该标记位置读取数据longskip longn 在输入流中跳过几个字节 6 2Reader类与Writer类 表6 4Writer类的继承方法方法功能1 abstractvoidclose 关闭输出流2 abstractvoidflush 输出缓冲区刷新3 voidwrite char cbuf 向输出流写出字节序列4 cbufabstractvoidwrite char cbuf intoff intlen 向输出流写出字节序列cbuf off是写入开始位置 len为写入的字节个数voidwrite intc 向输出流写出单个字符voidwrite Stringstr 向输出流写出字符串voidwrite Stringstr intoff intlen 向输出流写出字符串 off是写入开始位置 len为写入的字节个数 6 3文件的管理 在学习文件管理前 我们要先熟悉File类 因为很多文件的读写都和流联系起来 Java使用File类创建的对象来获取文件本身的一些信息 如文件所在的目录 文件的长度 文件读写权限等 文件对象并不涉及对文件的读写操作 File类一共有3中构造方法 File Stringfilename File StringdirectoryPath String filename File Filef Stringfilename 其中 filename是文件名 directoryPath是一个路径 f是一个目录 在使用File Stringfilename 的时候 该文件被认定与当前应用程序在同一目录中 6 3 1文件 Java在文件处理的过程中 依靠File类创造文件对象 并通过对这个文件对象的操作来处理文件的管理 方法功能1 StringgetName 获取文件的名字2 booleancanRead 判断文件是否是可读的3 booleancanWrite 判断文件是否可被写入4 booleanexits 判断文件是否存在5 longlength 获取文件的长度 单位是字节 6 StringgetAbsolutePath 获取文件的绝对路径7 StringgetParent 获取文件的父目录8 booleanisFile 判断文件是否是一个正常文件 而不是目录9 booleanisDirectroy 判断文件是否是一个目录10 booleanisHidden 判断文件是否是隐藏文件11 longlastModified 获取文件最后修改的时间 时间是从1970年午夜至文件最后修改时刻的毫秒数 6 3 2文件字节流 InputStream InputStream的子类ByteArrayInputStream与字节数组关联的输入流一个字节数组 作为该输入流的数据源 内部输入缓冲区从其中获取数据 FileInputStream与文件关联的输入流File对象 FileDescriptor对象或文件名 其代表的文件作为该输入流的数据源 该文件必须实际存在 FilterInputStream过滤器输入流 拥有多个子类 用于指定如何读取数据 一个输入流 该过滤器输入流从其中获取数据 ObjectInputStream对象输入流 在对象串行化应用中用于读取对象信息 一个输入流 对象输入流从该输入流中获取对象信息 PipedInputStream管道输入流 在多线程环境中用于线程间的通信 另一个线程管道输出流 管道输入流从中获取数据 6 3 2文件字节流 FilterInputStream FilterInputStream的子类BufferedInputStream拥有一个内部输入缓冲区的过滤器输入流 一个输入流 该过滤器输入流从其中获取数据 或一个输入流和一个整数 该整数用于指定内部输入缓冲区的大小 DataInputStream按基本数据类型读取数据的过滤器输入流 一个输入流 该过滤器输入流从其中获取数据 LineNumberInputStream按行读取数据的过滤器输入流 不建议使用 一个输入流 该过滤器输入流从其中获取数据 PushbackInputStream可以将一个字节数据回送给数据源的过滤器输入流 为编译器提供的类 编程中极少用到 一个输入流 该过滤器输入流从其中获取数据 或一个输入流和一个整数 该整数用于指定回送缓冲区的大小 6 3 2文件字节流 OutputStream OutputStream的子类ByteArrayOutputStream与字节数组关联的输出流 无参数 输出缓冲区字节数组大小不限 或一个整数 作为输出缓冲区字节数组的大小 FileOutputStream与文件关联的输出流 File对象 FileDescriptOr对象或文件名 其代表的文件作为该输出流的输出端 该文件是否必须可用 视操作系统而定一个输出流 该过滤器输出流向其中写入数据 FilterOutputStream过滤器输出流 拥有多哥字类 用于指定如何输出数据 一个输出流 该过滤器输出流向其中写入数据 ObjectOutputStream对象输出流 在对象串行化应用中用于输出对象信息 一个输出流 对象输出流向该输出流中写入对象信息 PipedOutputStream管道输出流 在多线程环境中用于线程间的通信 另一个线程的管道输入流 管道输出流向其中写入数据 6 3 2文件字节流 FilterOutputStream BufferedOutputStream拥有一个内部输出缓冲区的过滤器输出流 一个输出流 该过滤器输出流从中获取数据 或一个输出流和一个整数 该整数用于指定内部输出缓冲区的大小 DataOutputStream按基本数据类型输出数据的过滤器输出流 一个输出流 该过滤器输出流向其中写入数据 PrintStream产生格式化输出结果的过滤器输出流 用于数据的显示 一个输出流 该过滤器输出流向其中写入数据 或一个输出流和一个布尔值 该布尔值指定是否自动刷新缓冲区 6 3 3文件字符流 由于在读取的过程中字节流不能直接的操作Unicode字符 而汉字在Unicode码中被看作为一个字符 所以在使用字节流读取的时候有可能会造成乱码 于是Java提供了了字符流 FileReader类和FileWriter类 他们在操作的时候要独立的创建对象具体方法如下 FileReader FileWriter Stringname 为名字为 name 的文件创建一个FileReader FileWriter对象 FileReader FileWriter Filefile 用File对象创建一个FileReader FileWriter对象 FileReader类的构造方法 intread 从文件中读取一个字符 该方法返回的是一个int类型数据 Unicode码 如果未读取到字符就返回 1intread charb 把从文件中读取的数据放入到b数组中 读取的数据长度就是数组b的长度intread charb intoff intlen 把从文件中读取的数据放入b数组中 开始的位置是off长度为len 如果到达文件的末尾 返回 1 FileWrite类的构造方法 publicvoidwrite charb 把数组b中的内容写入到输出流中publicvoidwrite charb intoff intlen 把数组b中从off开始 长为len的数据写入到输出流中voidwrite Stringstr 把字符串中的全部字符写入到输出流中voidwrite Stringstr intoff intlen 把字符串中从off开始 长为len的数据写入到输出流中 本章小结 本章主要介绍Java中对文件进行读写的相关知识 其中包括Java
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云培训心得体会总结5篇
- 浙江省建设工程质量检测专项及检测能力表
- 年八年级地理生物会考综合模拟试卷含答案详解评分标准与学生作答区
- 2026北京人行面试题目及答案
- 2026北卫面试题目及答案
- 2026编制保安面试题及答案大全
- 2026滨海幼儿园面试题及答案
- 2026滨水景观面试题及答案大全
- 2026不常见的面试题及答案
- 2026年西安市临潼区人民法院就业见习招募模拟试卷及参考答案详解(典型题)
- 肺结核病例诊疗记录模板
- 外阴硬化性苔藓
- DGTJ08-2240-2017 道路注浆加固技术规程
- 生猪急宰管理办法
- DB11∕T 2387-2024 城市轨道交通工程盾构机吊装技术规程
- 药品技术转移管理制度
- 2021版220kV厂站二次接线标准图纸集
- 夏令营教官业务培训
- T-CROPSSC 009-2023 茎尖菜用甘薯生产技术规程
- 2023学年度高一下学期班主任工作总结
- 绿化苗木主材采购(供货计划、售后服务承诺)
评论
0/150
提交评论