流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。它的特性是进行数据传输;
IO流流程套路就是: 输入流(读取) + 缓冲流 + 输出流(写入)
IO流分为:
字节流:InputStream和OutputStream是java中可以按照最小字节单位读取的流,即每次读写一个字节,字节流是直接连接到输入源的流。
字符流:是以字符为单位进行数据处理的IO流。本质其实就是基于字节流读取时,去查找指定的码表。
区别:
- 读写单位不同:字节流式以字节(8位2进制)为单位,字符流是以字符为单位,根据码表映射字符,一次可能读多个字节。
- 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。
- 字节流一次读入或读出是8位二进制
- 字符流一次读入或读出是16位二进制。

InputStream(字节输入流)是所有输入字节流的父类,是抽象类
ByteArrayInputStream、StringBufferInputStream、FileInputStream是三种基本的输入流,他们分别从数组、StringBuffer、和本地文件中读取数据。
PipedInputStream是从与其它线程共用的管道中读取数据,
OutputStream(字节输出流) 是所有的输出字节流的父类,是抽象类。
ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、和本地文件中写入数据。
PipedOutputStream 是向与其它线程共用的管道中写入数据。
ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流。
字符流和上面差不多
注意字符串只有字符流能读写: StringReader、 StringWriter
补充:
数据流: DataInputStream 、DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来。
转换流:InputStreamReader 、OutputStreamReader实现字节流和字符流之间的转换。
简单的例子:
字节流
public static void main(String []args){
FileInputStream in=null;
FileOutputStream out=null;
BufferedInputStream bufin = null;
BufferedOutputStream bufout = null;
try {
in=new FileInputStream("/Users/oneway/Winter/hhh/ALinks.txt");//读
bufin =new BufferedInputStream(in);//缓冲
out=new FileOutputStream("/Users/oneway/Winter/hhh/TextLinks.txt");//写
bufout =new BufferedOutputStream(out);//写缓冲
byte[] b = new byte[1024]; //每次读取的字节
int len;
//读取数据
while((len = bufin.read(b)) != -1){
//写入数据到缓冲区
out.write(b, 0, len);
//从缓冲区写出数据
out.flush();
}
in.close();
out.close();
System.out.println("文件已复制");
} catch (Exception e) {
System.out.println("文件复制错误");
e.printStackTrace();
}
}
字符流
public static void main(String []args){
FileReader reader = null;
FileWriter writer = null;
try {
reader = new FileReader("/Users/oneway/Winter/hhh/ALinks.txt");
writer =new FileWriter("/Users/oneway/Winter/hhh/TextLinks.txt");
int i =0;
while((i=reader.read()) != -1) {
writer.write(i);
}
reader.close();
writer.close();
System.out.println("文件已复制");
} catch (Exception e) {
System.out.println("文件复制错误");
e.printStackTrace();
}
}```
本文深入解析Java中的IO流概念,包括字节流和字符流的区别,数据传输过程,以及常见流类如InputStream、OutputStream、FileReader和FileWriter的使用方法。通过实例演示了如何使用这些流进行文件的读写操作。
3729

被折叠的 条评论
为什么被折叠?



