目录
1.字节流
IO流可以根据处理数据的基本单位分为字节流和字符流,而字节流中又可以按流向分为字节输出流(OutputStream)和字节输入流(InputStream)
(1)字节输入流不会为用户创建文件,使用输入流前要创建文件再使用,双引号内可以是文件的相对路径,也可以是文件的绝对路径。
InputStream in = new FileInputStream("aaa.txt");
(2)若文件不存在,字节输出流会为用户创建文件
OutputStream out = new FileOutputStream("AAA.txt");
String str = "abcd";
byte[] bytes = new byte[1024];
out.write(bytes,0,3);
out.close();
(3)字节流文件复制
FileInputStream in = new FileInputStream("aaa.txt");
FileOutputStream out = new FileOutputStream("a.txt");
byte[] b = new byte[1024];
int length = 0;
while((length = in.read(b)) != -1){
out.write(b,0,length);
}
in.close();
out.close();
2.字符流
IO流可以根据处理数据的基本单位分为字节流和字符流,而字符流中又可以按流向分为字符输出流(Reader)和字节输入流(Writer)
字符流复制文件
Reader reader = new FileReader("aaa.txt");
Writer writer = new FileWriter("a.txt");
char[] ch = new char[1024];
int len = 0;
while((len = reader.read(ch)) != -1){
writer.write(ch,0,len);
}
reader.close();
writer.close();
3.缓冲流
缓冲流是对字节流和字符流的加强,字节流和字符流是一个字节一个字节或者一个字符一个字符的读和写,而缓冲流可以一行行的读和写,效率有了很大的提升。
(1)字节缓冲流
字节缓冲文件复制
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("aaa.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("a.txt"));
byte[] b = new byte[1024];
int len = 0;
while((len = bis.read(b)) != -1){
bos.write(b,0,len);
}
bis.close();
bos.close();
(2)字符缓冲流
字符缓冲文件复制
BufferedReader br = new BufferedReader(new FileReader("aaa.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
char[] ch = new char[1024];
int len = 0;
while((len = br.read(ch)) != -1){
bw.write(ch,0,len);
}
br.close();
bw.close();
4.总结
(1)文件不存在时,输入流不能为用户创建文件,输出流能为用户创建文件;
(2)字节流不用关闭流可以正常运行程序,而字符流不能在不关闭流的情况下运行程序,一般来说,用完流后,关闭流是程序员的好习惯;
(3)通常使用的流为字节流,只有使用特殊符号等时会用到字符流;
(4)字节流可以转换为字符流,这里使用到转换流;
(5)数据较小时,可以使用字节流或者字符流,当数据很大时,使用缓冲流效率更高。
5.建议采纳
如有建议或者错误请私信我进行修改,感谢!!!