




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
javajava ioio 流的图解及代码操作流的图解及代码操作 流式 IO 流 Stream 是字节的源或目的 两种基本的流是 输入流 Input Stream 和输出流 Output Stream 可从中读 出一系列字节的对象称为输入流 而能向其中写入一系列字节的对象称为输出 流 流的分类 节点流 从特定的地方读写的流类 例如 磁盘或一块内存区域 过滤流 使用节点流作为输入或输出 过滤流是使用一个已经存在的输入流或 输出流连接创建的 InputStream 三个基本的读方法 abstract int read 读取一个字节数据 并返回读到的数据 如果 返回 1 表示读到了输入流的末尾 int read byte b 将数据读入一个字节数组 同时返回实际读取的 字节数 如果返回 1 表示读到了输入流的末尾 int read byte b int off int len 将数据读入一个字节数组 同时返回实际读取的字节数 如果返回 1 表示读到了输入流的末尾 off 指 定在数组 b 中存放数据的起始偏移位置 len 指定读取的最大字节数 其它方法 long skip long n 在输入流中跳过 n 个字节 并返回实际跳过的字 节数 int available 返回在不发生阻塞的情况下 可读取的字节数 void close 关闭输入流 释放和这个流相关的系统资源 void mark int readlimit 在输入流的当前位置放置一个标记 如果 读取的字节数多于 readlimit 设置的值 则流忽略这个标记 void reset 返回到上一个标记 boolean markSupported 测试当前流是否支持 mark 和 reset 方法 如果支持 返回 true 否则返回 false java io 包中 InputStream 的类层次 OutputStream 三个基本的写方法 abstract void write int b 往输出流中写入一个字节 void write byte b 往输出流中写入数组 b 中的所有字节 void write byte b int off int len 往输出流中写入数组 b 中 从偏移量 off 开始的 len 个字节的数据 其它方法 void flush 刷新输出流 强制缓冲区中的输出字节被写出 void close 关闭输出流 释放和这个流相关的系统资源 java io 包中 OutputStream 的类层次 Demo1 在控制台读取键盘输入 然后显示 Ctrl C 结束运行 import java io public class StreamDemo public static void main String args throws Exception int data while data System in read 1 System out write data 基本的流类 1 FileInputStream 和 FileOutputStream 节点流 用于从文件中读取或往文件中写入字节流 如果在构造 FileOutputStream 时 文件已经存在 则覆盖这个文件 Demo2 将字符串写入特定文件 注意 write 方法只接收字符数组 import java io public class StreamDemo public static void main String args throws Exception FileOutputStream fos new FileOutputStream 1 txt 注意 FileOutputStream 的 write 方法接收字符数组 不能接收 String 字符串 所以要用 String 的 getBytes 方法生成一个字符数组 fos write getBytes fos close String 的构造方法的 API Java API String public String byte bytes int offset int length 构造一个新的 String 方法是使用指定的字符集解码字节的指定子数组 新的 String 的长度是一个字符集函数 因此不能等于该子数组的长度 当给定字节在给定字符集中无效的情况下 该构造方法无指定的行为 当需要 进一步控制解码过程时 应使用 CharsetDecoder 类 参数 bytes 要解码为字符的字节 offset 要解码的首字节的索引 length 要解码的字节数 抛出 IndexOutOfBoundsException 如果 offset 和 length 参数索引字符超出 bytes 数组的范围 从以下版本开始 JDK1 1 Demo3 将字符串写入特定文件 注意 write 方法只接收字符数组 然后通过文件输出流读取数据 注意使用 String 特定的构造方法 import java io public class StreamDemo public static void main String args throws Exception FileOutputStream fos new FileOutputStream 1 txt 注意 FileOutputStream 的 write 方法接收字符数组 不能接收 String 字符串 所以要用 String 的 getBytes 方法生成一个字符数组 fos write getBytes fos close 使用 String 的这个构造方法 String byte bytes int offset int length FileInputStream fis new FileInputStream 1 txt byte buf new byte 100 int len fis read buf 使用 String 的这个构造方法 String byte bytes int offset int length System out println new String buf 0 len fis close 使用完后记得关闭文件流 运行结果 2 BufferedInputStream 和 BufferedOutputStream 过滤流 需要使用已经存在的节点流来构造 提供带缓冲的读写 提高了读写 的效率 Java API 构造方法摘要 BufferedOutputStream OutputStream out 创建一个新的缓冲输出流 以将数据写入指定的基础输出流 BufferedOutputStream OutputStream out int size 创建一个新的缓冲输出流 以将具有指定缓冲区大小的数据写入指 定的基础输出流 BufferedOutputStream public BufferedOutputStream OutputStream out 创建一个新的缓冲输出流 以将数据写入指定的基础输出流 参数 out 基础输出流 BufferedOutputStream public BufferedOutputStream OutputStream out int size 创建一个新的缓冲输出流 以将具有指定缓冲区大小的数据写入指定的基础输 出流 参数 out 基础输出流 size 缓冲区的大小 抛出 IllegalArgumentException 如果 size 0 Demo4 通过一个 OutputStream 对象来构造一个 BufferedOutputStream 对象 而 FileOutputStream 类是 OutputStream 类的子类 所以可以用它来构造 1 import java io 2 3 public class StreamDemo 4 5 public static void main String args throws Exception 6 7 FileOutputStream fos new FileOutputStream 1 txt 8 BufferedOutputStream bos new BufferedOutputStream fos 9 bos write getBytes 10 11 12 运行结果 1 txt 文件为空 原因 缓冲区没有写满 程序没有向文件写数据 解决方法 1 使用 flush 方法 Demo4 使用 flush 方法 可以使程序立即向文件写数据 1 import java io 2 3 public class StreamDemo 4 5 public static void main String args throws Exception 6 7 FileOutputStream fos new FileOutputStream 1 txt 8 BufferedOutputStream bos new BufferedOutputStream fos 9 bos write getBytes 10 11 bos flush 12 13 14 运行结果 数据被写入相应的文件 解决方法 2 使用 close 方法 Demo5 使用 close 方法 同样可以使程序立即向文件写数据 1 import java io 2 3 public class StreamDemo 4 5 public static void main String args throws Exception 6 7 FileOutputStream fos new FileOutputStream 1 txt 8 BufferedOutputStream bos new BufferedOutputStream fos 9 bos write getBytes 10 11 bos close 12 13 14 运行结果 数据被写入相应的文件 flush 和 close 的区别 还要使用流对象 还需要写数据 使用 flush 否则使用 close 另外 使用 close 将关闭自己的流对象 同时会关闭与之相关的流对象 如 FileOutputStream 流 Demo6 使用 BufferedInputStream 流 从文件中读取数据 同样要用 InputStream 流对象或者其子类的对象来构造 1 import java io 2 3 public class StreamDemo 4 5 public static void main String args throws Exception 6 7 FileOutputStream fos new FileOutputStream 1 txt 8 BufferedOutputStream bos new BufferedOutputStream fos 9 bos write getBytes 10 11 bos close 12 13 FileInputStream fis new FileInputStrea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 时间的朋友课件
- 公司员工入职培训
- 中医优势病种培训
- 计算机培训汇报
- 钢琴启蒙素养课件
- 时装效果图技法课件
- 二零二五年度电子产品店长合作协议
- 二零二五年专业服务器电脑硬件维护及性能优化合同
- 2025版文化创意产业借款合同文本与格式要求
- 2025版低碳节能商品房预售合同书
- 手术前抗凝药停用时间
- 2024北森图形推理题
- 数据中心网络安全保障措施
- 2025年初中语文教师招聘面试八年级下册逐字稿社戏
- 家具商场联营合同协议
- 2025年青岛版七年级数学下册全套测试卷
- 婚内单身协议书范本
- 转让药店合同协议
- 2025浙江省交通投资集团限公司中层领导岗位招聘10人易考易错模拟试题(共500题)试卷后附参考答案
- 诉讼可视化课件
- 启东吕四海域400MW滩涂光伏升压站工程报告表
评论
0/150
提交评论