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);
}
上一篇下一篇

猜你喜欢

热点阅读