IO流原理及流的分类

I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以 “流(stream)” ” 的方式进行。可以想象两个节点之间连接着一跟管子,两节点之间通过管子来传输数据,而数据在管子里就像是水流一样,从一节点流到另一个节点。 java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并…

FileInputStream&FileOutputStream用法示例

FileReader、FileWriter只能够用来处理文本文件,但对于非文本文件(图片、视频、音乐等),这两个类就没有能力处理了。对于非文本文件,我们需要使用xxxInputStream、xxxOutputStream这些类来处理。 复制图片 try ( FileInputStream fileInputStream = new FileInputStream("dir/1.jpg&q…

缓冲流

对于节点流FileReader、FileWriter以及FileInputStream、FileOutputStream,真实开发场景中很少直接用,一般都会配合使用处理流(如缓冲流),来提高文件的处理效率。 缓冲流 为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。 缓冲流要“套接”在相应的节点流之…

转换流

转换流提供了在字节流和字符流之间的转换 Java API提供了两个转换流: InputStreamReader:将InputStream转换为Reader OutputStreamWriter:将Writer转换为OutputStream 常见的应用场景有: 文件字符编码的转码 读取指定编码的文本文件 // 读取gdk编码的文本文件,使用utf-8读取 public static void rea…

对象流

ObjectInputStream和OjbectOutputSteam:用于存储和读取基本数据类型数据或对象的处理流。它的强大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。 对象序列化 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其它程序获取了这种二进制流,…

标准输入输出流、打印流、数据流

标准输入输出流、打印流、数据流作为了解知识。 标准输入、输出流 System.in和System.out分别代表了系统标准的输入和输出设备。默认的标准输入流为键盘、标准输出流为屏幕。 System.in是InputStream类型,而System.out是PrintStream,PrintStream是OutputStream的子类 重定向:通过System类的setIn,setOut方法对默认设…

RandomAccessFile

RandomAccessFile 声明在java.io包下,但直接继承于java.lang.Object类。并且它实现了DataInput、DataOutput这两个接口,也就意味着这个类既可以读也可以写。 RandomAccessFile 类支持 “随机访问” 的方式,程序可以直接跳到文件的任意地方来读、写文件 支持只访问文件的部分内容 可以向已存在的文件后追加内容 RandomAccessFi…

Java NIO概述

Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。 Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一…

Stream介绍

Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是Stream API。注意,这里的Stream不同于java.io的InputStream和OutputStream,它代表的是任意Java对象的序列。两者对比如下: java.io java.util.stream 存储 顺序读写的byte或char 顺序输出的任意Java对象实例 用途 序列化至文件或网络 内存计算/…