java学习笔记30(IO :缓冲流)
生活随笔
收集整理的這篇文章主要介紹了
java学习笔记30(IO :缓冲流)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
緩沖流:
讀取數(shù)據(jù)大量的文件時(shí),讀取的速度慢,java提供了一套緩沖流,提高IO流的效率;
緩沖流分為字節(jié)緩沖流和字符緩沖流;
字節(jié)輸入緩沖流和字節(jié)輸出緩沖流如下:
package com.zs.Demo;import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;public class Demo {public static void main(String[] args) {try {fun();fun1();} catch (IOException e) {e.printStackTrace();}}//字節(jié)緩沖輸入流private static void fun1() throws IOException {//第二種創(chuàng)建緩沖流方式BufferedInputStream bis=new BufferedInputStream(new FileInputStream("d:\\a.txt"));int len=0;while((len=bis.read())!=-1){System.out.println((char)len);}bis.close();}//字節(jié)緩沖輸出流private static void fun() throws IOException {//第一種方式FileOutputStream f=new FileOutputStream("d:\\a.txt");BufferedOutputStream bos=new BufferedOutputStream(f);//寫(xiě)入一個(gè)字節(jié)bos.write(105);bos.write("hello world".getBytes());//寫(xiě)入字節(jié)數(shù)組bos.write("hello world".getBytes(),0,2);//寫(xiě)入字節(jié)數(shù)組指定內(nèi)容 bos.close();} }字符輸入緩沖流和輸出緩沖流如下:
package com.zs.Demo;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException;public class Demo2 {public static void main(String[] args) {try {fun();fun1();} catch (IOException e) {e.printStackTrace();}}//字符輸出緩沖流private static void fun() throws IOException {BufferedWriter bw=new BufferedWriter(new FileWriter("d:\\b.txt"));bw.write(111);//自動(dòng)查碼表,編碼bw.flush();//注意字符輸出流每次操作都要刷新bw.write("hello world".toCharArray());//寫(xiě)入字符數(shù)組 bw.flush();bw.newLine();//newLine()特有方法,換行 bw.flush();bw.write("java");//寫(xiě)入字符串 bw.flush();bw.close();}//字符輸入緩沖流private static void fun1() throws IOException {//字符輸入緩沖流BufferedReader br=new BufferedReader(new FileReader("d:\\b.txt"));int len=0;while ((len=br.read())!=-1) {System.out.print((char)len);}br.close(); //創(chuàng)建字符數(shù)組輸入緩沖流對(duì)象BufferedReader br1=new BufferedReader(new FileReader("d:\\b.txt"));int len1=0;char[] c=new char[1024];while((len1=br1.read(c))!=-1){System.out.print(new String(c,0,len1));}br1.close();//字符輸入緩沖流特有的方法readLine() 一次讀取一行BufferedReader br2=new BufferedReader(new FileReader("d:\\b.txt"));String len3=null;//這里注意是字符串類型while((len3=br2.readLine())!=null){System.out.println(len3);}br2.close();} }下面寫(xiě)一個(gè)比較字節(jié)流,字節(jié)數(shù)組流,字節(jié)緩沖流,字節(jié)數(shù)組緩沖流復(fù)制文件速度的代碼:
package com.zs.Demo;import java.io.*;public class Demo5 {public static void main(String[] args) {long start = System.currentTimeMillis();try {//這里一個(gè)一個(gè)方法的運(yùn)行,比較時(shí)間,復(fù)制的文件是一個(gè)240M的視頻文件 // fun1("h:\\1.mp4","g:\\1.mp4");//字節(jié)流 // fun2("h:\\1.mp4","g:\\1.mp4");//字節(jié)數(shù)組流 // fun3("h:\\1.mp4","g:\\1.mp4");//字節(jié)緩沖流fun4("h:\\1.mp4","g:\\1.mp4");//字節(jié)數(shù)組緩沖流} catch (IOException e) {e.printStackTrace();}long end = System.currentTimeMillis();System.out.println(end-start);}//字節(jié)數(shù)組緩沖流private static void fun4(String s, String s1) throws IOException {BufferedInputStream fi=new BufferedInputStream(new FileInputStream(s));BufferedOutputStream fo=new BufferedOutputStream(new FileOutputStream(s1));int len=0;byte[] b=new byte[1024*10];while((len=fi.read(b))!=-1){fo.write(b,0,len);}//1653毫秒 fo.close();fi.close();}//字節(jié)緩沖流private static void fun3(String s, String s1) throws IOException {BufferedInputStream fi=new BufferedInputStream(new FileInputStream(s));BufferedOutputStream fo=new BufferedOutputStream(new FileOutputStream(s1));int len=0;while((len=fi.read())!=-1){fo.write(len);}//13015毫秒 fo.close();fi.close();}//字節(jié)數(shù)組流private static void fun2(String s, String s1) throws IOException {FileInputStream fi=new FileInputStream(new File(s));FileOutputStream fo=new FileOutputStream(new File(s1));byte[] b=new byte[1024*10];int len=0;while((len=fi.read(b))!=-1){fo.write(b,0,len);}//6979毫秒 fo.close();fi.close();}//字節(jié)流private static void fun1(String s, String s1) throws IOException {FileInputStream fi=new FileInputStream(new File(s));FileOutputStream fo=new FileOutputStream(new File(s1));int len=0;while((len=fi.read())!=-1){fo.write(len);}//太慢了,等不下去了,時(shí)間十分鐘以上 fo.close();fi.close();} }可以看出字節(jié)數(shù)組緩沖流速度最快,
轉(zhuǎn)載于:https://www.cnblogs.com/Zs-book1/p/10600290.html
總結(jié)
以上是生活随笔為你收集整理的java学习笔记30(IO :缓冲流)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: oppo设备怎么样无需root激活XPO
- 下一篇: 服务器linux centos 7.4