------- 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 |
该类别的类决定了输出所要去往的目标:字节数组(但不是String,不过你当然可以用字节数组自己创建)、文件或管道
表2 OutputStream类型 | |||
类 | 功能 | 构造器参数 | 如何使用 |
ByteArrayOutputStream | 在内存中创建缓冲区。所有送往“流”的数据都要放置在此缓冲区 | 缓冲区初始化尺寸(可选的) | 用于指定数据的目的地:将其与FilterOutputStream对象相连以提供有用接口 |
FileOutputStream | 用于将信息写至文件 | 字符串,表示文件名、文件或FileDescriptor对象 | 用于指定数据的目的地:将其与FilterOutputStream对象相连以提供有用接口 |
PipedOutputStream | 任何写入其中的信息都会自动作为相关PipedInputStream的输出。实现“管道化”概念 | PipedInputStream | 指定用于多线程的数据的目的地:将其与FilterOutputStream对象相连以提供有用接口 |
FilterOutputStream | 抽象类,作为“装饰器”的接口。其中,“装饰器”为其他的OutputStream类提供有用的功能。见表4 | 见表4 | 见表4 |
表3 FilterInputStream类型 | |||
类 | 功能 | 构造器参数 | 如何使用 |
DataInputStream | 与DataOutputStream搭配使用,因此我们可以按照可移植方式从流读取基本数据类型(int,char,long等) | InputStream | 包含用于读取基本类型数据的全部接口 |
BufferedInputStream | 使用它可以防止每次读取时都得进行实际写操作。代表“使用缓冲区” | InputStream,可以指定缓冲区大小(可选的) | 本质上不提供接口,只不过是向进程中添加缓冲区所必需的。与接口对象搭配 |
LineNumberInputStream | 跟踪输入流中的行号,可调用getLineNumber()和setLineNumber(int) | InputSream | 仅增加了行号,因此可能要与接口对象搭配使用 |
PushbackInputStream | 具有“能弹出一个字节的缓冲区”。因此可以将读到的最后一个字符回退 | InputSream | 通常作为编译器的扫描器,之所以包含在内是因为Java编译器的需要,我们可能永远不会用到 |
表4 FileOutputStream类型 | |||
类 | 功能 | 构造器参数 | 如何使用 |
DataOutputStream | 与DataInputStream搭配使用,因此我们可以按照可移植方式从流写入基本数据类型(int,char,long等) | OutputStream | 包含用于写入基本类型数据的全部接口 |
PrintStream | 用于产生格式化输出。其中DataOutputStream处理数据的存储,PrintStream处理显示 | OutputStream,可以用boolean值指示是否在每次换行时清空缓冲区(可选的) | 应该是对OutputStream对象的“final”封装。可能会经常使用到它 |
BufferedInputStream | 使用它以避免每次发送数据时都要进行实际的写操作。代表“使用缓冲区”。可以调用flush()清空缓冲区 | OutputStream,可以指定缓冲区大小(可选的) | 本质上并不提供接口,只不过是向进程中添加缓冲区所必需的。与接口对象搭配 |