FileInputStream:普通的字节输入流,用来读取数据的
构造方法:
public FileInputStream(String pathname);
成员方法:
public int read();
单个:一次读取一个字节,并返回读取到的内容,读不到返回-1
数组:一次读取一个字节数组,将读取到的内容存入到数组中,并返回读取到的有效字节数,读不到则返回-1
FileOutputStream:普通的字节输出流,用来写数据
构造方法:
public FileOutputStream(String pathname);
成员方法:
public void write(int len);
单个:一次写入一个字节
数组:一次写入一个指定的字节数组
步骤:
创建字节流读文件对象:
InputStream is = new FileInputStream(“1.jpg”);
创建字节流写文件对象:
OutputStream os = new FileOutputStream(“D:\2.jpg”);
使用while循环读写数据:
int b;
while (b = is.read() != -1) {
os.write(b);
}
异常处理:
throws IOException
关闭资源:
is.close();
os.close();
自行在相关文件夹下放入图片
package io.demo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class StreamDemo {
public static void main(String[] args) throws IOException {
// 需求:通过普通的字节流,一次读写一个字节的方式,将a.jpg复制到b.jpg中
// 1.创建字节输入流,关联数据源文件
FileInputStream is = new FileInputStream("lib/1.jpg");
// 2.创建字节输出流,关联目的地文件
FileOutputStream os = new FileOutputStream("lib/2.jpg");
// 3.定义变量,记录读取到的内容
int i;
// 4.循环读取,只要条件满足就一直读取,并将读取到的内容渎职给变量
while ((i = is.read()) != -1) {
// 5.将读取到的内容写入目的地文件中
os.write(i);
}
// 6.释放资源
is.close();
os.close();
}
}
创建字节流读文件对象:
InputStream is = new FileInputStream(“1.jpg”);
创建字节流写文件对象:
OutputStream os = new FileOutputStream(“D:\2.jpg”);
异常处理:
throws IOException
关闭资源:
is.close();
os.close();
定义字节数组,每次读取2048个字节:
byte[] b = new byte[2048];
使用while循环读写数据:
int i;
while (i = is.read() != -1) {
os.write(b,0,i);
}
package io.demo;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class StreamDemo2 {
public static void main(String[] args) throws IOException {
// 需求:通过普通的字节流,一次读写一个字节数组的方式,将a.jpg复制到b.jpg中
// 1.创建字节输入流对象,关联数据源文件
FileInputStream is = new FileInputStream("lib/1.jpg");
// 2.创建字节输出流对象,关联目的地文件
FileOutputStream os = new FileOutputStream("lib/3.jpg");
// 3.定义变量,接收读取到的内容
byte[] b = new byte[1024]; //[]里面写多少都行,最好是写1024的整数倍
// 用来记录读取到的有效字节数
int len;
// 4.循环读取,只要条件满足,就一直读取,并将读取到的内容(有效的字节数)赋值给变量
while ((len = is.read(b)) != -1) {
// 5.将读取到的数据写入目的地文件
os.write(b,0,len);
}
// 6.释放文件
is.close();
os.close();
}
}
BufferedInputStream:字节缓冲输入流(也叫高效字节输入流),用来读数据的;
构造方法:
public BufferedInputStream(InputStream is);
成员方法:
public int read();
单个:一次读取一个一个字节,并返回读取到的内容,读不到返回-1;
BufferedOutputStream:字节缓冲输出流(也叫高效字节输出流),用来写数据的;
构造方法:
public BufferedOutputStream(OutputStream os);
成员方法:
public void write(int len);
单个:一次写入一个字节;
**特点:**字节缓冲流有自己的缓冲区,大小为8192个字节,也就是8KB
步骤:
创建字节缓冲流读文件对象:
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(“1.jpg”));
创建字节缓冲流写文件对象:
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(“2.jpg”));
异常处理:
throws IOException
关闭资源:
is.close();
os.close();
使用while循环读写数据:
int i;
while (i = bis.read() != -1) {
os.write(i);
}
package io.demo;
import java.io.*;
//总结:
// 拷贝纯文本文件使用字符流,拷贝其他(图片,视频,音频)使用字节流
public class StreamDemo3 {
public static void main(String[] args) throws IOException {
//需求:通过字节缓冲流,将1.jpg复制到2.jpg中
// 1.创建字节输入流对象,关联数据源文件
// 分写
// FileInputStream is = new FileInputStream("lib/1.jpg");
// BufferedInputStream bis = new BufferedInputStream(is);
// 合并
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("lib/1.txt"));
// 2.创建字节输出流对象,关联目的地文件
// 分写
// FileOutputStream os = new FileOutputStream("lib/2.jpg");
// BufferedOutputStream bos = new BufferedOutputStream(os);
// 合并
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("lib/2.txt"));
// 3.定义变量,用来存放读取到的数据
int len;
// 4.循环读取,只要条件满足就一直读取,并将读取到的内容赋值给变量
while ((len = bis.read()) != -1) { //底层是按照字节数组来操作的
// 5.将读取到的内容写入目的地文件中
bos.write(len);
}
// 6.释放资源
bis.close();
bos.close();
}
}
**总结:**拷贝纯文本文件使用字符流,拷贝其他(图片,视频,音频)使用字节流。