IO流原理及流的分类

2025-10-29 23:56:38

1、Java IO流原理

l  I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。

l  Java程序中,对于数据的输入/输出操作以”流(stream)” 的方式进行。java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据

IO流原理及流的分类

2、流的分类

l  按操作数据单位不同分为:字节流(8 bit),字符流(16 bit) 

l  按数据流的流向不同分为:输入流,输出流

l  按流的角色的不同分为:节点流,处理流

IO流原理及流的分类

IO流原理及流的分类

IO流原理及流的分类

3、节点流(文件流)

读取文件

1.建立一个流对象,将已存在的一个文件加载进流。

Ø  FileReader fr = new FileReader(“Test.txt”);

2.创建一个临时存放数据的数组。

Ø  char[] ch = new char[1024];

3.调用流对象的读取方法将流中的数据读入到数组中。

Ø  fr.read(ch);

注  意

l  定义文件路径时,注意:可以用“/”或者“\\”。

l  在写入一个文件时,如果目录下有同名文件将被覆盖。

在读取文件时,必须保证该文件已存在,否则出异常

IO流原理及流的分类

4、缓冲流

l  为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组

l  根据数据操作单位可以把缓冲流分为:

Ø  BufferedInputStream 和 BufferedOutputStream

Ø  BufferedReader 和 BufferedWriter

l  缓冲流要“套接”在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法

l  对于输出的缓冲流,写出的数据会先在内存中缓存,使用flush()将会使内存中的数据立刻写出

IO流原理及流的分类

5、转换流

转换流

l  转换流提供了在字节流和字符流之间的转换

l  Java API提供了两个转换流:

Ø  InputStreamReader和OutputStreamWriter

l  字节流中的数据都是字符时,转成字符流操作更高效。

IO流原理及流的分类

IO流原理及流的分类

6、标准输入/输出流

标准输入/输出流

l  System.in和System.out分别代表了系统标准的输入和输出设备

l  默认输入设备是键盘,输出设备是显示器

l  System.in的类型是InputStream

l  System.out的类型是PrintStream,其是OutputStream的子类FilterOutputStream 的子类

l  通过System类的setIn,setOut方法对默认设备进行改变。

Ø  public static void setIn(InputStream in)

Ø  public static void setOut(PrintStream out)

IO流原理及流的分类

7、打印流

l  实现将基本数据类型的数据格式转化为字符串输出

l  打印流:PrintStream和PrintWriter

Ø  提供了一系列重载的print和println方法,用于多种数据类型的输出

Ø  PrintStream和PrintWriter的输出不会抛出异常

Ø  PrintStream和PrintWriter有自动flush功能

Ø  System.out返回的是PrintStream的实例

IO流原理及流的分类

8、数据流

l  为了方便地操作Java语言的基本数据类型的数据,可以使用数据流。

l  数据流有两个类:(用于读取和写出基本数据类型的数据)

Ø  DataInputStream 和 DataOutputStream

Ø  分别“套接”在 InputStream 和 OutputStream 节点流上

IO流原理及流的分类

9、对象流

   对象流

l  ObjectInputStream和OjbectOutputSteam

Ø  用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。

l  序列化:用ObjectOutputStream类保存基本类型数据或对象的机制

l  反序列化:用ObjectInputStream类读取基本类型数据或对象的机制

Ø  ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量

对象的序列化

l  对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其它程序获取了这种二进制流,就可以恢复成原来的Java对象

IO流原理及流的分类

10、随机存取文件流

RandomAccessFile 类

l  RandomAccessFile 类支持 “随机访问” 的方式,程序可以直接跳到文件的任意地方来读、写文件

Ø  支持只访问文件的部分内容

Ø  可以向已存在的文件后追加内容

l  RandomAccessFile 对象包含一个记录指针,用以标示当前读写处的位置。RandomAccessFile 类对象可以自由移动记录指针:

Ø  long getFilePointer():获取文件记录指针的当前位置

Ø  void seek(long pos):将文件记录指针定位到 pos 位置

IO流原理及流的分类

11、流的基本应用小节

IO流原理及流的分类

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢