构造方法:
FileInputStream(File file)//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(String name)//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
//ctrl+alt+空格 提示文件名
常用方法:
read();一次读一个字节,返回的是int类型,如果读取不到返回-1
read(byte[]);把文件中的数据,读取到容器中,返回值是读取到的有效字节个数,超过有效字节个数的字节返回值为0
read(byte[] b, int off, int len);从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。
注意事项:1.输入流所关联的文件必须存在,如果不存在,会报错
2.流使用完毕要释放资源
public class Test {
public static void main(String[] args) throws IOException {
FileInputStream in = new FileInputStream("e.txt");
//创建一个字节数组,充当容器
byte[] bytes = new byte[1024];
int len = in.read(bytes); //把文件中的数据,读取到容器中,返回值是,读取到的有效字节个数
String s = new String(bytes, 0, len);//把字节数组转成字符串
System.out.println(s);
in.close();
}
}
构造方法:
BufferedOutputStream(OutputStream out) 创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size) 创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
06 BufferedInputStream读入数据
BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 mark 和 reset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节。
构造方法:
BufferedInputStream(InputStream in) 创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
BufferedInputStream(InputStream in, int size) 创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
07 案例:字节流复制文件
public class Test {
public static void main(String[] args) throws IOException {
FileInputStream fileInputStream = new FileInputStream("a.txt");
FileOutputStream fileOutputStream = new FileOutputStream("d.txt");
byte[] bytes = new byte[1024 * 8];
int length = 0;
while ((length=fileInputStream.read(bytes))!=-1){
fileOutputStream.write(bytes,0,length);
fileOutputStream.flush();
}
fileInputStream.close();
fileOutputStream.close();
}
}
//使用高效的字节流复制文件
public class Test {
public static void main(String[] args) throws IOException {
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("领悟1.mp3"));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("领悟.mp3"));
byte[] bytes = new byte[1024 * 8];
int length =0;
while ((length=bufferedInputStream.read(bytes))!=-1){
bufferedOutputStream.write(bytes,0,length);
bufferedOutputStream.flush();
}
bufferedInputStream.close();
bufferedOutputStream.close();
}
}