java基础-IO流
2020-11-23 本文已影响0人
木木郡主
IO流.png
字节流
FileOutputStream
1、向文件中写入字符'a','b','c'
//创建输出流对象,如果目的文件不存在,程序会自动创建(前提是文件父目录必须存在)
OutputStream out = new FileOutputStream("d:/test/a.txt");
//
OutputStream out = new FileOutputStream("d:/test/a.txt",true);
out.write(97);
out.write(98);
out.write(99);
byte[] bytes = "abc".getBytes();
out.write(bytes);
byte[] bytes1 = "abcdefg".getBytes();
out.write(bytes,0,3);
FileInputStream
读取文件内容
int ch;
while ((ch = in.read()) != -1)
{ System.out.println(ch);
}
byte[] bytes2 = new byte[3];
int len;
while ((len = in.read(bytes)) != -1) {
String str = new String(bytes,0,len);
System.out.println(str);
}
综合应用:复制文件
需求,将a.txt中的内容复制到b.txt中
核心步骤:
方式一:一次读写一个字节
InputStream in = new FileInputStream("d:/test/a.txt");
OutputStream out = new FileOutputStream("d:/test/g.txt");
int ch;
while ((ch = in.read()) != -1) {
out.write(ch);
}
in.close();
out.close();
方式二:一次读写一个字节数组
InputStream in = new FileInputStream("d:/test/a.txt");
OutputStream out = new FileOutputStream("d:/test/g.txt");
byte[] bytes = new byte[1024];
int len;
while ((len = in.read(bytes)) != -1) {
String str = new String(bytes,0,len);
System.out.println(str);
}
in.close;
out.close;
高效字节流
BufferedInputStream
BufferedInputStream
字节缓冲流仅仅提供缓冲区,真正的底层的读写数据还是需要基本流对象进行操作,区别仅仅在定义对象时不同
//创建字节缓冲流输入对象
BufferedInputStream bfin = new BufferedInputStream(new FileInputStream("d:/test/a.txt"));
//创建字节缓冲流输出对象
BufferedOutputStream bfout = new BufferedOutputStream(new FileOutputStream("d:/test/c.txt"));
字符流
普通字符流 FileReader 和FileWriter
字符流操作和字节流操作相似,只是操作的是字符
一次读取一个字符
一次读取一个字符数组
//用普通字符流把一个文件中的内容读取到另一个文件中
FileReader fr = new FileReader("d:/test/a.txt");
FileWriter fw = new FileWriter("d:/test/q.txt");
char[] chars = new char[1024];
int len;
while ((len = fr.read(chars)) != -1) {
fw.write(chars,0,len);
}
fr.close();
fw.close();
高效字符流
BufferedReader br = new BufferedReader(new FileReader("d:/test/a.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("d:/test/r.tex"));
//写入内容
bw.write("用于亮剑");
bw.newLine(); // 换行
bw.write("绝不后退");
//读取-写入
int ch = 0;
while ((ch = br.read()) != -1) {
bw.write(ch);
}
//特有读取方法 一次读取一行
String line = null;
while((line = br.readLine()) != null) {
bw.write(line);
}