黑马程序员—I/O

------- android培训java培训、期待与您交流! ----------

1,File类是IO包中唯一代表磁盘文件本身信息的类,而不是文件中的内容,File类定义了一些与平台无关的方法来操纵文件,例如:创建、删除文件和重命名文件,Java中的目录被当作一种特殊的文件使用,list方法可以返回目录中的所有目录和文件名。在Unix下的路径分隔符为(/),在Dos下的路径分隔符为(\),Java可以正确处理Unix和Dos的路径做分隔符。File类的实例是不可变的,也就是说,一旦创建,File对象表示的抽象路径名将永不改变。
2,RandomAccessFile类适用于由大小已知的记录组成的文件,所以我们可以使用seek方法将记录从一处转到另一处,然后读取或者修改记录。文件中记录的大小不一定都相同,只要我们能够确定那些记录有多大以及它们在文件中的位置即可。它是一个直接从Object派生而来的,RandomAccessFile不是InputStream或者OutputStream继承层次结构中的一部分,除了实现了DataInput和DataOutput接口以外,它和这两个继承层次结构没有任何关联。
3,流的概念:流是字节序列的抽象概念,文件是数据的静态存储形式,而流是指数据传输时的形态,流类分类两个大类:节点流类和过滤流类(也叫处理流类)
节点流类:用于直接操作目标设备所对应的流类。节点流类所对应的IO源或目标称为流节点。比如我们用一个类和一个文件或网络相关联,那么这个类就叫做节点流类,这个文件或网络就叫做流的节点。
过虑流类:使用节点流作为输入输出。过虑流是使用一个已经存在的输入流或输出流连接创建的。

4,InputStream类型

InputStream的作用是用来表示从不同数据源产生的输入的类如表1所示,这些数据源包括

(1)字节数组。

(2)String对象。

(3)对象。

(4)”管道“,工作方式与实际管道相似,即,从一端输入,从另一端输出。

(5)一个由其他种类的流组成的序列,以便我们可以将它们收集合并到一个流内。

(6)其他数据源,如Internet连接等。

表1 InputStream类型
功能构造器参数如何使用
ByteArrayInputStream允许将内存的缓冲区当作InputStream使用缓冲区,字节将从中取出作为一种数据源:将其与FileInputStream对象相连以提供有用接口
StringBufferInputStream将String转换成InputStream字符串。底层实现实际使用StringBuffer作为一种数据数据源:将其与FilterInputStream对象相连以提供有用接口
FileInputStream用于从文件中读取信息字符串,表示文件名、文件或FileDescriptor对象作为一种数据源:将其与FilterInputStream对象相连以提供有用接口
PipedInputStream产生用于写入相关PipedInputStream的数据。实现“管道化”概念PipedOnputStream作为多线程中数据源:将其与FilterInputStream对象相连以提供有用接口
SequenceInputStream将两个或多个InputStream对象转换成单一InputStream两个InputStream对象或一个容纳InputStream对象的容器Enumeration作为一种数据源:将其与FilterInputStream对象相连以提供有用接口
FilterInputStream抽象类,作为“装饰器”的接口。其中,“装饰器”为其他的InputStream类提供有用的功能。见表3见表3见表3
5,OutputStream类型

该类别的类决定了输出所要去往的目标:字节数组(但不是String,不过你当然可以用字节数组自己创建)、文件或管道

表2 OutputStream类型
功能构造器参数如何使用
ByteArrayOutputStream在内存中创建缓冲区。所有送往“流”的数据都要放置在此缓冲区缓冲区初始化尺寸(可选的)用于指定数据的目的地:将其与FilterOutputStream对象相连以提供有用接口
FileOutputStream用于将信息写至文件字符串,表示文件名、文件或FileDescriptor对象用于指定数据的目的地:将其与FilterOutputStream对象相连以提供有用接口
PipedOutputStream任何写入其中的信息都会自动作为相关PipedInputStream的输出。实现“管道化”概念PipedInputStream指定用于多线程的数据的目的地:将其与FilterOutputStream对象相连以提供有用接口
FilterOutputStream抽象类,作为“装饰器”的接口。其中,“装饰器”为其他的OutputStream类提供有用的功能。见表4见表4见表4
6,FilterInputStream类能够完成两件完全不同的事情。其中,DataInputStream允许我们读取不同的基本类型数据以及String对象(所有方法都以”read“开头,例如readByte()、readFloat()等)。搭配相应的DataOutputStream,我们就可以通过数据”流“将基本类型的数据从一个地方迁移到另一个地方。具体哪些“地方”是由表1中的那些类决定的。我们几乎每次都要对输入进行缓冲——不管我们正在连接的是什么I/O设备,所以,I/O类库把无缓冲输入(而不是缓冲输入)作为特殊情况(或只是方法调用)就显得更加合理了

表3 FilterInputStream类型
功能构造器参数如何使用
DataInputStream与DataOutputStream搭配使用,因此我们可以按照可移植方式从流读取基本数据类型(int,char,long等)InputStream包含用于读取基本类型数据的全部接口
BufferedInputStream使用它可以防止每次读取时都得进行实际写操作。代表“使用缓冲区”InputStream,可以指定缓冲区大小(可选的)本质上不提供接口,只不过是向进程中添加缓冲区所必需的。与接口对象搭配
LineNumberInputStream跟踪输入流中的行号,可调用getLineNumber()和setLineNumber(int)InputSream仅增加了行号,因此可能要与接口对象搭配使用
PushbackInputStream具有“能弹出一个字节的缓冲区”。因此可以将读到的最后一个字符回退InputSream通常作为编译器的扫描器,之所以包含在内是因为Java编译器的需要,我们可能永远不会用到
7,FilterOutputStream的类型及功能

表4 FileOutputStream类型
功能构造器参数如何使用
DataOutputStream与DataInputStream搭配使用,因此我们可以按照可移植方式从流写入基本数据类型(int,char,long等)OutputStream包含用于写入基本类型数据的全部接口
PrintStream用于产生格式化输出。其中DataOutputStream处理数据的存储,PrintStream处理显示OutputStream,可以用boolean值指示是否在每次换行时清空缓冲区(可选的)应该是对OutputStream对象的“final”封装。可能会经常使用到它
BufferedInputStream使用它以避免每次发送数据时都要进行实际的写操作。代表“使用缓冲区”。可以调用flush()清空缓冲区OutputStream,可以指定缓冲区大小(可选的)本质上并不提供接口,只不过是向进程中添加缓冲区所必需的。与接口对象搭配
8,Reader与Writer提供兼容Unicode与面向字符的I/O功能,是所有字符流类的抽象基类,用于简化对字符串的输入输出编程,即用于读写文本数据

------- android培训java培训、期待与您交流! ----------

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值