InputStream
InputStream是一个接口
纯净流读取
//定义流 InputStream 是接口 属于抽象类
InputStream ins;
//多态 文件输入流
ins = new FileInputStream(new File("sea.jpeg"));
//或者其他流 ins= new xxxInputStream
//读取一个字节
//int read = ins.read();
//10k 字节数组
byte[] insbyte = new byte[1024 * 10];
//每个标准文件流的结尾 特殊字节 都是 -1
//长度就是每次 出流中取出的长度并存放到 字节数组的长度
int len;
// 有内容
while ((len = ins.read(insbyte)) != -1) {
//具体将流进行操作
System.out.println(len);
//每次读取到的字节将全部存入 insbyte中 对流进行转换直接将数组内容进行赋值
// insbyte 内容大概 158 -145 -100 100
// 读取到多少转多少
// outputStream.write(insbyte,0,len);
}
//关流
ins.close();
outputStream.close();
带文件输出流的流转换
//定义流 InputStream 是接口 属于抽象类
InputStream ins;
//多态 文件输入流
ins = new FileInputStream(new File("sea.jpeg"));
//读取一个字节
//int read = ins.read();
//10k 字节数组
byte[] insbyte = new byte[1024 * 10];
//每个标准文件流的结尾 特殊字节 都是 -1
OutputStream outputStream=new FileOutputStream(new File("C:\\Users\\86182\\Desktop\\新建文件夹 (2)\\复制.jpg"));
//长度就是每次 出流中取出的长度并存放到 字节数组的长度
int len;
// 有内容
while ((len = ins.read(insbyte)) != -1) {
System.out.println(len);
//每次读取到的字节将全部存入 insbyte中 对流进行转换直接将数组内容进行负责
// insbyte 内容大概 158 -145 -100 100
// 读取到多少转多少
outputStream.write(insbyte,0,len);
}
//关流
ins.close();
outputStream.close();
BufferedInputStream
//定义流 InputStream 是接口 属于抽象类
InputStream ins;
//多态 文件输入流
ins = new FileInputStream(new File("sea.jpeg"));
//多态 文件输出流转buffer 输入流
ins = new BufferedInputStream(ins);
//读取一个字节
//int read = ins.read();
//10k 字节数组
byte[] insbyte = new byte[1024 * 10];
//每个标准文件流的结尾 特殊字节 都是 -1
//长度就是每次 出流中取出的长度并存放到 字节数组的长度
int len;
// 有内容
while ((len = ins.read(insbyte)) != -1) {
System.out.println(len);
//每次读取到的字节将全部存入 insbyte中 对流进行转换直接将数组内容进行负责
// insbyte 内容大概 158 -145 -100 100
// 读取到多少转多少
// ops.write(insbyte, 0, len);
}
//关流
ins.close();
//ops.close();
完整的一个InputStream 测试
import java.io.*;
public class InputStreamTest {
public static void main(String[] args) throws IOException {
//定义流 InputStream 是接口 属于抽象类
InputStream ins;
//多态 文件输入流
ins = new FileInputStream(new File("sea.jpeg"));
//读取一个字节
//int read = ins.read();
//10k 字节数组
byte[] insbyte = new byte[1024 * 10];
//每个标准文件流的结尾 特殊字节 都是 -1
OutputStream outputStream=new FileOutputStream(new File("C:\\Users\\86182\\Desktop\\新建文件夹 (2)\\复制.jpg"));
//长度就是每次 出流中取出的长度并存放到 字节数组的长度
int len;
// 有内容
while ((len = ins.read(insbyte)) != -1) {
System.out.println(len);
//每次读取到的字节将全部存入 insbyte中 对流进行转换直接将数组内容进行赋值
// insbyte 内容大概 158 -145 -100 100
// 读取到多少转多少
outputStream.write(insbyte,0,len);
}
//关流
ins.close();
outputStream.close();
}
}
{mtitle title="输出流"/}
OutputStream
简洁输出流
//定义输出流
OutputStream ops;
//多态 输出流转文件输出流
ops = new FileOutputStream(new File("sea.jpg"));
byte opsbyte[] = new byte[1024 * 10]; //10k输出流
//写入
ops.write(opsbyte);
//刷入硬盘并关流
ops.close();
}
OutputStream测试
import java.io.*;
public class OutputStreamTest {
public static void main(String[] args) throws IOException {
//定义输出流
OutputStream ops;
//多态 输出流转文件输出流
ops = new FileOutputStream(new File("sea.jpg"));
byte opsbyte[] = new byte[1024 * 10]; //10k输出流
//写入
ops.write(opsbyte);
//刷入硬盘并关流
ops.close();
}
}
BufferedOutputStream
//定义输出流
OutputStream ops;
//多态 输出流转文件输出流
ops = new FileOutputStream(new File("sea.jpg"));
//多态 文件输出流转 buffer文件输出流
ops=new BufferedOutputStream(ops);
byte opsbyte[] = new byte[1024 * 10]; //10k输出流
//写入
ops.write(opsbyte);
//刷入硬盘并关流
ops.close();
BufferedInputStream与BufferedOutputStream 速度很快 推荐使用
{message type="info" content="还能减少读写硬盘的次数"/}
//定义流 InputStream 是接口 属于抽象类
InputStream ins;
//多态 文件输入流
ins = new FileInputStream(new File("sea.jpeg"));
//多态 文件输出流转buffer 输入流
ins = new BufferedInputStream(ins);
//定义输出流
OutputStream ops;
//多态 输出流转文件输出流
ops = new FileOutputStream(new File("sea.jpg"));
//多态 文件输出流转 buffer文件输出流
ops = new BufferedOutputStream(ops);
//读取一个字节
//int read = ins.read();
//10k 字节数组
byte[] insbyte = new byte[1024 * 10];
//每个标准文件流的结尾 特殊字节 都是 -1
//长度就是每次 出流中取出的长度并存放到 字节数组的长度
int len;
// 有内容
while ((len = ins.read(insbyte)) != -1) {
System.out.println(len);
//每次读取到的字节将全部存入 insbyte中 对流进行转换直接将数组内容进行赋值
// insbyte 内容大概 158 -145 -100 100
// 读取到多少转多少
ops.write(insbyte, 0, len);
}
//关流
ins.close();
ops.close();