Java学习-Java IO 系统

Java IO 系统


版权声明:本文为博主原创文章,转载请注明出处。
https://mp.csdn.net/mdeditor/84931671
1、输入和输出
所有和输入有关的类都从InputStream继承,与输出有关的类都OutputStream继承.

1-1InputStream类型
InputStream 的作用是标志那些从不同起源地产生输入的类。这些起源地包括(每个都有一个相关的InputStream 子类):
(1) 字节数组
(2) String 对象
(3) 文件
(4) “管道”,它的工作原理与现实生活中的管道类似:将一些东西置入一端,它们在另一端出来。
(5) 一系列其他流,以便我们将其统一收集到单独一个流内。
(6) 其他起源地,如Internet 连接。
特殊:FilterInputStream也属于InputStream类,用它可为“破坏类”提供一个基础类,以便将属性或者有用的接口同输入流连接到一起。

类型:
(类型:)ByteArrayInputStream;(功能:)允许内存中的一个缓存区作为InputStream使用;(构建器参数/如何使用:)从中提取字节的缓冲区/作为一个数据源使用。通过将其同一个FilterInputStream对象连接,可提供一个有用的接口。
(类型:)StringBufferInputStream;(功能:)将一个 String 转换成 InputStream 一个String(字串)。(构建器参数/如何使用:)基础的实施方案实际基础的实施方案实际采用一个StringBuffer(字串缓冲)/作为一个数据源使用。通过将其同一个 FilterInputStream 对象连接,可提供一个有用的接口。
(类型:)FileInputStream;(功能:)用于从文件读取信息;(构建器参数/如何使用:)
代表文件名的一个 String,或者一个 File 或FileDescriptor 对象/作为一个数据源使用。通过将其同一个FilterInputStream 对象连接,可提供一个有用的接口。
(类型:)PipedInputString;(功能:)产生为相关的 PipedOutputStream 写的数据。(构建器参数/如何使用:)实现了“管道化”的概念。
(类型:)PipedOutputStream;(构建器参数/如何使用:)/作为一个数据源使用。通过将其同一个 FilterInputStream;对象连接,可提供一个有用的接口。
(类型:)SequenceInputStream;(功能:) 将两个或更多的InputStream 对象转换成单个InputStream 使用。(构建器参数/如何使用:)两个InputStream 对象或者一个 Enumeration,用于 InputStream 对象的一个容器/作为一个数据源使用。通过将其同一个FilterInputStream 对象连接,可提供一个有用的接口。
(类型:)FilterInputStream;(功能:)对作为破坏器接口使用的类进行抽象;(构建器参数/如何使用:)那个破坏器为其他 InputStream 类提供了有用的功能。

1-2OutputStream类型
(1)一个字节数组(但没有String;假定我们可用字节数组创建一个);
(2)一个文件;
(3)一个“管道”。

类型:
(类型:)ByteArrayOutputStream;(功能:)在内存中创建一个缓冲区。我们发送给流的所有数据都会置入这个缓冲区。(构建器参数/如何使用:)可选缓冲区的初始大小/用于指出数据的目的地。若将其同FilterOutputStream 对象连接到一起,可提供一个有用的接口。
(类型:)FileOutputStream;(功能:)将信息发给一个文件。(构建器参数/如何使用:)用一个 String 代表文件名,或选用一个File 或FileDescriptor 对象/用于指出数据的目的地。若将其同FilterOutputStream 对象连接到一起,可提供一个有用的接口。
(类型:)PipedOutputStream;(功能:)我们写给它的任何信息都会自动成为相关的PipedInputStream 的输出。(构建器参数/如何使用:)实现了“管道化”的概念 PipedInputStream/为多线程处理指出自己数据的目的地/将其同FilterOutputStream 对象连接到一起,便可提供一个有用的接口。
(类型:)FilterOutputStream;(功能:)对作为破坏器接口使用的类进行抽象处理;(构建器参数/如何使用:)那个破坏器为其他 OutputStream 类提供了有用的功能。

2、增添属性和有用的接口
2-1 通过FilterInputStream从InputStream里读入数据

FilterInputStream类型:
(类型:)DataInputStream;(功能:)与 DataOutputStream 联合使用,使自己能以机动方式读取一个流中的基本数据类型(int,char,long 等等);(构建器参数/如何使用:)InputStream/包含了一个完整的接口,以便读取基本数据类型。
(类型:)BufferedInputStream;(功能:) 避免每次想要更多数据时都进行物理性的读取,告诉它“请先在缓冲区里找”InputStream,没有可选的缓冲区大小/本身并不能提供一个接口,只是发出使用缓冲区的要求。要求同一个接口对象连接到一起 。
(类型:)LineNumberInputStream;(功能:)跟踪输入流中的行号;(构建器参数/如何使用:)可调用 getLineNumber()以及setLineNumber(int) 只是添加对数据行编号的能力,所以可能需要同一个真正的接口对象连接。
(类型:)PushbackInputStream;(功能:) 有一个字节的后推缓冲区,以便后推读入的上一个字符;(构建器参数/如何使用:) InputStream/通常由编译器在扫描器中使用,因为 Java 编译器需要它。一般不在自己的代码中使用。

2-2 通过FilterOutputStream向OutputStream里写入数据

  • DataOutputStream:对各个基本数据类型以及String 对象进行格式化,并将其置入一个数据“流”中,以便任何机器上的 DataInputStream 都能正常地读取它们。所有方法都以“wirte”开头,例如 writeByte(),writeFloat()等等。
  • PrintStream:格式化输出。利用它可以打印出所有基本数据类型以及 String 对象,这与DataOutputStream 正好相反,后者的目标是将那些数据置入一个数据流中,以便DataInputStream 能够方便地重新构造它们。 System.out 静态对象是一个PrintStream。PrintStream 内两个重要的方法是 print()和println()。它们已进行了覆盖处理,可打印出所有数据类型。print()和 println()之间的差异是后者在操作完毕后会自动添加一个新行。
  • BufferedOutputStream: 属于一种“修改器”,用于指示数据流使用缓冲技术,使自己不必每次都向流内物理性地写入数据。通常都应将它应用于文件处理和控制器IO。
 FilterOutputStream 类型:
 (类型:)DataOutputStream ;(功能:) 与 DataInputStream 配合使用,以便采用方便的形式将基本数据类型(int,char,long等)。(构建器参数/如何使用:)写入一个数据流 OutputStream/包含了完整接口,以便我们写入基本数据类型。
 (类型:)PrintStream; (功能:) 用于产生格式化输出。(构建器参数/如何使用:)DataOutputStream 控制的是数据的“存储”,而 PrintStream 控制的是“显示” OutputStream,可选一个布尔参数,指示缓冲区是否与每个新行一同刷新/对于自己的OutputStream 对象,应该用“final”将其封闭在内。可能经常都要用到它。
 (类型:)BufferedOutputStream ;(功能:)用它避免每次发出数据的时候都要进行物理性的写入,要求它“请先在缓冲区里找”。(构建器参数/如何使用:)可调用flush(),对缓冲区进行刷新 OutputStream,可选缓冲区大小/本身并不能提供一个接口,只是发出使用缓冲区的要求。需要同一个接口对象连接到一起。
 

3、本身的缺陷:RandomAccessFile
RandomAccessFile 用于包含了已知长度记录的文件,以便我们能用 seek()从一条记录移至另一条;然后读取或修改那些记录。各记录的长度并不一定相同;只要知道它们有多大以及置于文件何处即可。
从根本上说,RandomAccessFile 类似DataInputStream 和 DataOutputStream 的联合使用。

常用方法:
getFilePointer():用于了解当前在文件的什么地方。
seek():用于移至文件内的一个新地点。
length():用于判断文件的最大长度。
注意:构建器要求使用另一个自变量(与C 的fopen()完全一样),指出自己只是随
机读("r"),还是读写兼施("rw")。

4、File 类(实际上时存的是文件路径)
(1)代表一个特定文件的名字,也代表目录内一系列文件的名字。
(2)代表一个文件集,便可用list()方法查询这个集,返回的是一个字串数组。之所以要返回一个数组,而非某个灵活的集合类,是因为元素的数量是固定的。而且若想得到一个不同的目录列表,只需创建一个不同的File 对象即可。

4-1 目录列表器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值