java字节缓冲流和字符缓冲流
一.字节缓冲流
1.介绍
字节缓冲流根据流的方向,分为:
1.写入数据到流中,字节缓冲输出流 BufferedOutputStream
2.读取流中的数据,字节缓冲输入流 BufferedInputStream
它们的内部都包含了一个缓冲区,通过缓冲区读写,就可以提高了IO流的读写速度
2.字节缓冲输出流BufferedOutputStream
构造方法:
public BufferedOutputStream(OutputStream out):创建一个新的缓冲输出流,以将数据写入指定的底层输出流。
//字节输出缓冲流 public static void method01() throws IOException{ //创建基本的字节输出流 FileOutputStream fos=new FileOutputStream("E:\\java\\demo.txt"); BufferedOutputStream bos=new BufferedOutputStream(fos); //写数据 fos.write(100); //释放资源 bos.close(); }
3.字节缓冲输入流 BufferedInputStream
构造方法:
public BufferedInputStream(InputStream in)
//字节输入缓冲流 public static void method02() throws IOException{ //创建缓冲流对象 FileInputStream fis=new FileInputStream("E:\\java\\demo.txt"); BufferedInputStream bis=new BufferedInputStream(fis); //读数据 int len=0; while((len=bis.read())!=-1){ System.out.println((char)len); } //释放资源 bis.close(); }
4. 复制文件
public static void method04() throws IOException{ //明确数据源 FileInputStream fis=new FileInputStream("E:\\java\\aaa.zip"); BufferedInputStream bis=new BufferedInputStream(fis); //明确目的地 FileOutputStream fos=new FileOutputStream("E:\\java\\a\\aaa.zip"); BufferedOutputStream bos=new BufferedOutputStream(fos); //开始复制 long time1=System.currentTimeMillis(); int len=0; byte[] ch=new byte[1024]; while((len=bis.read(ch))!=-1){ bos.write(ch,0,len); } long time2=System.currentTimeMillis(); System.out.println(time2-time1); //释放资源 bos.close(); bis.close(); }
二.字符缓冲流
1.介绍
字符缓冲输入流 BufferedReader
字符缓冲输出流 BufferedWriter
完成文本数据的高效的写入与读取的操作
2.字符缓冲输出流 BufferedWriter
void newLine() 根据当前的系统,写入一个换行符
public static void method01() throws IOException{ //明确目的地 FileWriter fw =new FileWriter("E:\\java\\demo01.txt"); //添加缓冲流 BufferedWriter bw=new BufferedWriter(fw); //写入文件 // windows: \r\n // linux: \n // newline(); System.out.println(System.in); bw.write("你好"); bw.newLine(); bw.flush(); bw.write("java"); bw.newLine(); bw.flush(); bw.write("中国"); bw.newLine(); //释放资源 bw.close(); }
3.字符缓冲输入流 BufferedReader
public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
public static void method02() throws IOException{ //明确数据源 FileReader fr=new FileReader("E:\\java0929\\demo01.txt"); //添加缓冲流 BufferedReader br=new BufferedReader(fr); //开始读取文件 String line=br.readLine(); System.out.println(line); line=br.readLine(); System.out.println(line); line=br.readLine(); System.out.println(line); line=br.readLine(); System.out.println(line); //释放资源 br.close(); }
public static void method03() throws IOException{ //明确数据源 FileReader fr=new FileReader("E:\\java\\demo01.txt"); //添加缓冲流 BufferedReader br=new BufferedReader(fr); //开始读取文件 String line=null; while((line=br.readLine())!=null){ System.out.print(line); } //释放资源 br.close(); }
4.复制文件
public static void copy() throws IOException{ //明确数据源 FileReader fr=new FileReader("E:\\java0929\\demo02.txt"); BufferedReader br=new BufferedReader(fr); //明确目的地 FileWriter fw=new FileWriter("E:\\java0929\\c\\demo02.txt"); BufferedWriter bw=new BufferedWriter(fw); //开始复制 String line=null; int linenum=0; while((line=br.readLine())!=null){ linenum++; bw.write(linenum+" "+line); bw.newLine(); bw.flush(); } //释放资源 bw.close(); br.close(); }