字节流 有平民输入输出流 也有贵族输入输出流
首先平民文件输出流 ,可以往文件中写入数据 慢
平民文件输出流
FileOutputStream(File file
)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream(String name
)
创建一个向具有指定名称的文件中写入数据的输出文件流
write(byte) 一次录入一个字节数据
byte[] bytes
= {101, 102, 103};
out
.write(bytes
);
String str
="好好学习,天天向上,爱生活,爱Java";
byte[] bytes1
= str
.getBytes();
out
.write(bytes1
);
out
.write(str
.getBytes(),0,12);
out
.write(bytes
,1,2);
//流使用完毕,要记得关闭流,释放资源, out.close();//记得流使用完毕,要关闭流
直接传文件的字符串路径,如果关联的这个文件不存在,会自动创建
FileOutputStream out
= new FileOutputStream("b.txt");
写出换行符"\r\n" windows 系统的换行符
FileOutputStream(String name
, boolean append
)
创建一个向具有指定 name 的文件中写入数据的输出文件流。
FileOutputStream(File file
, boolean append
)
创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileOutputStream out
= new FileOutputStream("d.txt", true);
参数:追加写入 true 代表追加,false 不追加
平民文件输入流
FileInputStream(File file
)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(String name
)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
注意:输入流所关联的文件,如果不存在,就会报错
FileInputStream in
= new FileInputStream("e.txt");
int len
= in
.read();
System
.out
.println(len
);
in.close(); //记得释放资源
FileInputStream in
= new FileInputStream(new File("e.txt"));
byte[] bytes
= new byte[1024];
int len
= in
.read(bytes
);
System
.out
.println(len
);
String s
= new String(bytes
,0,len
);
System
.out
.println(s
);
in
.close();
读入一个字节,写出一个字节进行文件的复制
FileInputStream in
= new FileInputStream("MyTest2.java");
File file
= new File("E:\\test");
file
.mkdirs();
FileOutputStream out
= new FileOutputStream(new File(file
,"MyTest2.java"));
int len
=0;
while ((len
=in
.read())!=-1){
out
.write(len
);
out
.flush();
}
in
.close();
out
.close();
一次读写一个字节数组来复制,来复制,音频文件
File file
= new File("C:\\Users\\ShenMouMou\\Music\\我的图片和音乐\\音乐\\新上海滩 - 上海滩.mp3");
FileInputStream in
= new FileInputStream(file
);
FileOutputStream out
= new FileOutputStream("E:\\test\\" + file
.getName());
int len
=0;
byte[] bytes
= new byte[1024*8];
while ((len
=in
.read(bytes
))!=-1){
System
.out
.println("次数");
out
.write(bytes
,0,len
);
out
.flush();
}
out
.close();
in
.close();
异常处理结合字节流实例
FileInputStream in
= null
;
FileOutputStream out
= null
;
try {
System
.out
.println(1 / 0);
in
= new FileInputStream("C:\\Users\\ShenMouMou\\Music\\我的图片和音乐\\疯狂动物城.mp4");
out
= new FileOutputStream("E:\\test\\疯狂动物城.mp4");
int len
= 0;
byte[] bytes
= new byte[1024 * 1024 * 10];
while ((len
= in
.read(bytes
)) != -1) {
out
.write(bytes
, 0, len
);
out
.flush();
}
} catch (IOException e
) {
e
.printStackTrace();
} finally {
try {
if (out
!= null
) {
out
.close();
}
if (in
!= null
) {
in
.close();
}
} catch (IOException e
) {
e
.printStackTrace();
}
}
高效(贵族)的字节流
该类实现缓冲的输出流。***通过设置这种输出流,应用程序就可以将各个字节写入底层输出流中,而不必针对每次字节写入调用底层系统。***这就是贵族的特权
BufferedOutputStream(OutputStream out)
创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
BufferedOutputStream(OutputStream out, int size)
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。
BufferedInputStream 为另一个输入流添加一些功能,
即缓冲输入以及支持 mark 和 reset 方法的能力。
在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。
构造方法摘要
BufferedInputStream(InputStream in)
创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
BufferedInputStream(InputStream in, int size)
创建具有指定缓冲区大小的 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(string));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(string));