




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章输入输出流 10 1File类10 2FileInputStream类10 3FileOutputStream类10 4FileReader类和FileWriter类10 5使用文件对话框打开和保存文件10 6RandomAccessFile类 10 7数据流10 8数组流10 9对象流10 10序列化与对象克隆10 11文件锁FileLock10 12Process类中的流10 13带进度条的输入流 I O流 I O流提供一条通道程序 可以使用这条通道把源中的字节序列送给目的地 把输入流的指向称做源 程序从指向源的输入流中读取源中的数据 而输出流的指向是字节要去的一个目的地 或用户 程序通过向输出流中写入数据把信息传递到目的地 虽然I O流经常与磁盘文件存取有关 但是程序的源和目的地也可以是键盘 鼠标 内存或显示器窗口 Java的I O流库提供大量的流类 在包java io中 但是 所有输入流类都是抽象类InputStream 字节输入流 或抽象类Reader 字符输入流 的子类 而所有输出流都是抽象类OutputStream 字节输出流 或抽象类Writer 字符输出流 的子类 10 1File类 File类的对象主要用来获取文件本身的一些信息 例如文件所在的目录 文件的长度 文件读写权限等 不涉及对文件的读写操作构造方法有3个 File Stringfilename File StringdirectoryPath Stringfilename File Filef Stringfilename 10 2FileInputStream类 使用文件输入流构造方法建立通往文件的输入流时 可能会出现错误 也被称为异常 为了把一个文件输入流对象与一个文件关联起来 使用类似于下面所示的代码 try FileInputStreamins newFileInputStream myfile dat catch IOExceptione System out println Filereaderror e 文件I O错误 从输入流中读取字节 read方法给程序提供一个从输入流中读取数据的基本方法 read方法从输入流中顺序读取源中的单个字节数据 该方法返回字节值 0 255之间的一个整数 如果到达源的末尾 该方法返回 1 read方法还有其它一些形式 这些形式能使程序把多个字节读到一个字节数组中 intread byteb intread byteb intoff intlen 10 3FileOutputStream类 FileOutputStream提供了基本的文件写入能力 构造方法 FileOutputStream Stringname FileOutputStream Filefile FileOutputStream流使用write方法把字节写入到输出流达到目的地 write的格式如下 publicvoidwrite byteb 其功能是写b length个字节到输出流 publicvoid write byteb intoff intlen 其功能是从给定字节数组中起始于偏移量off处写len个字节到输出流 10 4FileReader类和FileWriter类 与FileInputStream FileOutputStream字节流相对应的是FileReader FileWriter字符流 他们分别是Reader和Writer的子类 其构造方法分别是 FileReader Stringfilename FileWriter Stringfilename 由于汉字在文件中占用2个字节 如果使用字节流 读取不当会出现乱码现象 采用字符流就可以避免这个现象 因为 在Unicode字符中 一个汉字被看作一个字符 10 5使用文件对话框打开和保存文件 使用文件对话框方便地打开和保存文件 因为文件对话框可以使用户很方便的选择文件所在的目录以及文件的名字 10 6RandomAccessFile类 RandomAccessFile类既不是输入流类InputStream类的子类 也不是输出流类OutputStram类的子类流 RandomAccessFile类创建的流的指向既可以作为源也可以作为目的地 换句话说 当我们想对一个文件进行读写操作时 我们可以创建一个指向该文件的RandomAccessFile流即可 这样我们既可以从这个流中读取文件的数据 也可以通过这个流写入数据到文件 构造方法 1 RandomAccessFile Stringname Stringmode 参数name用来确定一个文件名 给出流的源 同时也是流目的地 参数mode取r 只读 或rw 可读写 决定流对文件的访问权限 2 RandomAccessFile Filefile Stringmode 参数file是一个File对象 给出流的源 同时也是流目的地 参数mode取r 只读 或rw 可读写 决定流对文件的访问权限 10 7数据流 DataInputStream类和DataOutputStream类创建的对象被称为数据输入流和数据输出流 这两个流是很有用的两个流 它们允许程序按着机器无关的风格读取Java原始数据 也就是说 当我们读取一个数值时 不必再关心这个数值应当是多少个字节 构造方法 1 DataInputStream InputStreamin 将创建的数据输入流指向一个由参数in指定的输入流 以便从后者读取数据 按着机器无关的风格读取 2 DataOutputStream OutnputStreamout 将创建的数据输出流指向一个由参数out指定的输出流 然后通过这个数据输出流把Java数据类型的数据写到输出流out 10 8数组流 流的源和目标除了可以是文件外 还可以是计算机内存 字节输入流 ByteArrayInputStream和字节输出流 ByteArrayOutputStream分别使用字节数组作为流的源和目标 使用下列ByteArrayInputStream流的两个构造方法构造字节数组输入流对象 ByteArrayInputStream byte buf ByteArrayInputStream byte buf intoffset intlength 10 9对象流 ObjectInputStream类和ObjectOutputStream类创建的对象被称为对象输入流和对象输出流 对象输出流使用writeObject Objectobj 方法将一个对象obj写入输出流送往目的地 对象输入流使用readObject 从源中读取一个对象到程序中 构造方法分别是 ObjectInputStream InputStreamin ObjectOutputStream OutputStreamout 10 10序列化与对象克隆 有时我们想得到对象的一个 复制品 该复制品的实体是原对象实体的拷贝 复制品实体的变化不会引起原对象实体发生变化 这样的复制品称为原对象的克隆对象或简称克隆 使用对象流很容易得获取一个序列化对象的克隆 我们只需将该对象写入到对象输出流 那么用对象输入流读回的对象一定是原对象的一个克隆 一个类如果实现了Serializable接口 那么这个类创建的对象就是所谓序列化的对象 Serializable接口中的方法对程序是不可见的 因此实现该接口的类不需要实现额外的方法 当把一个序列化的对象写入到对象输出流时 JVM就会实现Serializable接口中的方法 将一定格式的文本 对象的序列化信息 写入到目的地 10 11文件锁FileLock JDK1 4增加了一个FileLock类 该类的对象称做文件锁 RondomAccessFile创建的流在读写文件时可以使用文件锁 那么只要不解除该锁 其它线程无法操作被锁定的文件 使用文件锁的步骤 首先使用RondomAccessFile流建立指向文件的流 该流的读写属性必须是 rw 例如 RandomAccessFileinput newRandomAccessFile Example java rw input流调用方法getChannel 获得一个连接到地层文件的FileChannel对象 信道 例如FileChannelchannel input getChannel 信道调用tryLock 或lock 方法获得一个FileLock 文件锁 对象 这一过程也称做对文件加锁 例如 FileLocklock channel tryLock 10 12Process类中的流 Process是java lang包中的一个类 可以使用该包中的Runtime类调用其静态方法exec得到Process的一个实例 exec方法可以运行一个可执行文件 即启动一个进程 exec方法返回一个Process对象 一个Process对象可以使用方法getErrorStream 获取该进程错误信息的输入流 使用方法getInputStream 获取指向该进程的输入流 方法getOutputStream 获取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科目四驾照题库及答案
- poct院内管理办法
- 专案项目管理办法模板
- 药厂管理办法及考核
- 红缘灯维护管理办法
- 碳资产贷款管理办法
- 襄阳市建设管理办法
- 财务内部结算管理办法
- 设计bom管理办法
- 网格化风险管理办法
- 个人健康个性化营养搭配与服务提供系统建设
- 房地产估价四假设开发法的应用案例
- 2023年政府采购评审专家考试题库(含答案)
- GB/T 45083-2024再生资源分拣中心建设和管理规范
- 大型运输车辆交通安全教育
- 《国有资产管理》课件
- 语文开学第一课课件 2024-2025学年统编版语文七年级上册
- 人教版高中生物必修1全册教学课件
- 青岛版小学数学五年级上册教案全册
- 连续性肾替代治疗抗菌药物剂量调整专家共识(2024年版)解读
- 11节约我们在行动(教学课件)五年级综合实践活动上册(苏少版)
评论
0/150
提交评论