黑马程序员 Java IO操作
2012-10-16 10:54
218 查看
-------
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连接等。
5,OutputStream类型
该类别的类决定了输出所要去往的目标:字节数组(但不是String,不过你当然可以用字节数组自己创建)、文件或管道
6,FilterInputStream类能够完成两件完全不同的事情。其中,DataInputStream允许我们读取不同的基本类型数据以及String对象(所有方法都以”read“开头,例如readByte()、readFloat()等)。搭配相应的DataOutputStream,我们就可以通过数据”流“将基本类型的数据从一个地方迁移到另一个地方。具体哪些“地方”是由表1中的那些类决定的。我们几乎每次都要对输入进行缓冲——不管我们正在连接的是什么I/O设备,所以,I/O类库把无缓冲输入(而不是缓冲输入)作为特殊情况(或只是方法调用)就显得更加合理了
7,FilterOutputStream的类型及功能
8,Reader与Writer提供兼容Unicode与面向字符的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 |
该类别的类决定了输出所要去往的目标:字节数组(但不是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,可以指定缓冲区大小(可选的) | 本质上并不提供接口,只不过是向进程中添加缓冲区所必需的。与接口对象搭配 |
相关文章推荐
- 黑马程序员 java 基础 毕向东 面向对象 IO操作 File Properties PrintWriter PrintStream 应用
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员——JAVA笔记——IO操作(2)
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 『黑马程序员』---java--IO--分段读写-操作基本类型-内存为源
- 黑马程序员——Java基础视频笔记(七):IO操作
- 黑马程序员------java -io操作
- 黑马程序员 java基础IO操作原则随笔
- 黑马程序员——JAVA笔记——IO操作
- 黑马程序员——java 之 IO读取文件排序后存入另一文件操作
- 黑马程序员——javaIO中File的操作与应用
- 黑马程序员 java IO PrintWriter BufferedReader 读取键盘 写操作
- 黑马程序员-JAVA高级视频_IO输入与输出-19天-7(字节流File读写操作)
- 黑马程序员——Java基础---IO(二)---IO字节流、流操作规律
- Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律 (黑马程序员)
- 黑马程序员——第六章 JavaIO操作
- 黑马程序员学习笔记之七(Java IO操作)
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员——Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律
- 黑马程序员--读写字节数组,随机读写流,集合IO的思维导图,多线程部分,单例设计模式,线程和进程的概念,Java中的线程的创建方式,线程的随机性,线程的状态图,多线程操作共享数据的安全性,死锁