亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

java筆記七:IO流之字節流與字節緩沖流

2019-11-17 03:27:30
字體:
來源:轉載
供稿:網友

  在I/O類庫中,java.io.InputStream和java.io.OutputStream分別表示字節輸入流和字節輸出流,它們都是抽象類,不能實例化,數據流中的最小單位是字節,所以叫做字節流。

  

一、InputStream中的讀取數據的方法如下:

  1 、int read()

  功能:讀取一個字節的數據,并且返回讀到得數據,如果返回-1,則表示讀到輸入流的末尾。

  2、int read(byte[] b)

  功能:從輸入流中讀取一定量的字節,并將其存儲在字節數組b中,返回實際讀取的字節數,如果返回-1,則表示讀到輸入流的末尾。

  3、int read(byte[] b, int off, int len)

  功能:將數據讀入一個字節數組,同時返回讀取的實際字節數,如果返回-1,則表示讀到輸入流的末尾。off指定在數組b中存放數據的起始偏移位置,len指定讀取的最大字節數。

  4、available()

  功能:返回此輸入流下一個方法調用可以不受阻塞地從此輸入流讀取或跳過的估計字節數。

  5、close()

  功能:關閉輸入流,釋放這個流的相關資源。

二、OutputStream中寫入數據的方法如下:

  1 、int write(int b)

  功能:將b的最低的一個字節寫入此輸入流,其他三個字節丟棄。

  2、int write(byte[] b)

  功能:將指定的字節數組b寫入此輸入流。

  3、int write(byte[] b, int off, int len)

  功能:將指定byte數組中從偏移量off開始的len個字節寫入輸入流。

  4、flush()

  功能:刷新此輸入流并強制寫出所有緩沖的輸出字節數。

  5、close()

  功能:關閉輸出流,釋放這個流的相關資源。

①字節數組輸入流:

復制代碼
 1 package com.iotest; 2  3 import java.io.ByteArrayInputStream; 4 import java.io.IOException; 5 public class ByteArryInputStreamDemo { 6     public static void main(String[] args) throws IOException { 7         String str = "abcdefghijk"; 8         byte[] strBuf = str.getBytes();  //字符串轉換成字節數組 9         ByteArrayInputStream bais = new ByteArrayInputStream(strBuf);10         int data = bais.read();          //從字節數組輸入流讀取字節11         while(data!=-1){12             char upper = Character.toUpperCase((char)data);13             System.out.);14             data = bais.read();15         }16         bais.close();17     }18 }
復制代碼

程序運行結果:A B C D E F G H I J K

②字節數組輸出流:

復制代碼
 1 package com.iotest; 2  3 import java.io.ByteArrayOutputStream; 4 import java.io.IOException; 5  6 public class ByteArrayOutputStreamDemo { 7     public static void main(String[] args) throws IOException { 8         ByteArrayOutputStream baos = new ByteArrayOutputStream(); 9         String s = "welcome to use ByteArrayOutputStreamDemo";10         byte[] buf = s.getBytes();  11         baos.write(buf); //將指定的byte數組寫到字節數組輸出流中12         System.out.println(baos.toString());  //將字節數組輸出流內容轉換成字符串輸出13         //將字節數組輸出流中的內容復制到字節數組中14         byte[] b = baos.toByteArray();15         for (int i = 0; i < b.length; i++) {16             System.out.print((char)b[i]);17         }18         baos.close();19     }20 }
復制代碼

程序運行結果:
welcome to use ByteArrayOutputStreamDemo
welcome to use ByteArrayOutputStreamDemo

③文件輸入輸出流的使用

復制代碼
 1 package com.iotest; 2  3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputStream; 7 import java.io.IOException; 8 //復制圖片 9 public class FileInputStreamDemo {10     public static void main(String[] args) throws IOException {11         File file = new File("F://shar//test//logo17.gif");12         FileInputStream fis = new FileInputStream(file); //創建一個輸入流13         //創建一個輸出流,后面一個參數true表示追加,原有內容不會被清除,默認為false14         FileOutputStream fos = new FileOutputStream("F://shar//test//logo18.gif",false);15         int ch = 0;16         //方式一17         /*while((ch=fis.read()) != -1){18             fos.write(ch);19         }*/20         //方式二21         /*byte[] b = new byte[1024];22         while((ch=fis.read(b)) != -1){23             fos.write(b,0,ch);24         }*/25         //方式三26         byte[] b = new byte[fis.available()];27         fis.read(b); //首先把fis的內容讀到字節數組b里面28         fos.write(b);//再把字節數組b的內容通過輸出流寫到指定文件29         //關閉流30         fos.close();31         fis.close();32     }33 34 }
復制代碼

④管道流的使用:
  一個PipedInputStream對象必須和一個PipedOutputStream對象進行連接從而產生一個通信管道。通常一個線程從管道輸出流寫入數據,另一個線程從管道輸入流中讀取數據。當線程A執行管道輸入流的read()方法時,如果暫時沒有數據,這個線程就會被阻塞,只有當線程B想管道輸出流寫了數據后,線程A才會恢復運行。

復制代碼
package com.iotest;import java.io.IOException;import java.io.PipedInputStream;import java.io.PipedOutputStream;/* * 管道流 */class Sender extends Thread{    private PipedOutputStream out = new PipedOutputStream();    public PipedOutputStream getOut() {        return out;    }    @Override    public void run() {        String s = "hello world";        try {            out.write(s.getBytes());            out.close();        } catch (Exception e) {            // TODO: handle exception        }    }}public class Receiver extends Thread{    private PipedInputStream in;    public Receiver(Sender sender) throws IOException {        in = new PipedInputStream(sender.getOut());    }    @Override    public void run() {        try {            int data;            while((data=in.read())!=-1){                System.out.print((char)data);            }            in.close();        } catch (Exception e) {            // TODO: handle exception        }    }    public static void main(String[] args) throws IOException {        Sender sender = new Sender();        Receiver r = new Receiver(sender);        sender.start();        r.start();    }}
復制代碼


⑤緩沖流的使用:

復制代碼
 1 package com.iotest; 2  3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.FileInputStream; 6 import java.io.FileNotFoundException; 7 import java.io.FileOutputStream; 8 import java.io.IOException; 9 10 public class TestPrime {11     private BufferedInputStream bis = null;12     private BufferedOutputStream bos = null;13     String fileName = "F://shar//test//test2.txt";14     static int s,p;15     //判斷是否是質數16     public boolean isPrime(int n){17         for(int i=2;i<=n/2;i++){18             if(n%i == 0){19                 return false;20             }21         }22         return true;23     }24     void printPrime(int m) throws IOException{25         //將字節流轉緩沖流26         bos = new BufferedOutputStream(new FileOutputStream(fileName));27         int j = 0;28         for (int i = 2; i < m; i++) {29             if(isPrime(i)){30                 j++;31                 if(j%s == 0){32                     String s = String.valueOf(i)+" ";33                     bos.write(s.getBytes());34                     bos.write("/r/n".getBytes());35                 }else{36                     String s = String.valueOf(i)+" ";37                     bos.write(s.getBytes());38                 }39             }40         }41         bos.flush();42         bos.close();43     }44     void getPrime() throws IOException{45         //將字節流轉緩沖流46         bis = new BufferedInputStream(new FileInputStream(fileName));47         int c = bis.read();48         while(c != -1){49             char ch = (char)c;50             System.out.print(ch);51             c = bis.read();52         }53     }54     /**55      * @param args56      * @throws IOException 57      */58     public static void main(String[] args) throws IOException {59         TestPrime t = new TestPrime();60         p = 100;61         s = 10;62         t.printPrime(p);63         t.getPrime();64     }65 66 }
復制代碼
如果不用緩沖流的話,程序是讀一個數據,寫一個數據。這樣在數據量大的程序中非常影響效率。 緩沖流作用是把數據先寫入緩沖區,等緩沖區滿了,再把數據寫到文件里。這樣效率就大大提高了。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级淫片videoshd| 精品视频—区二区三区免费| 国产精品成人国产乱一区| 亚洲精品美女在线观看播放| 中文字幕在线日韩| 日韩av综合中文字幕| 亚洲欧美另类国产| 久久人人看视频| 伊人激情综合网| 成人性生交大片免费看小说| 亚洲三级av在线| 最近2019中文字幕第三页视频| 欧美性受xxx| 精品国内自产拍在线观看| 国产一区二区美女视频| 亚洲精品免费在线视频| 韩剧1988免费观看全集| 久久综合九色九九| 亚洲图片制服诱惑| 色吧影院999| 国产91九色视频| 欧美中文字幕视频在线观看| 国产三级精品网站| 亚洲韩国欧洲国产日产av| 亚洲大尺度美女在线| 91精品视频免费观看| 欧美日本国产在线| 正在播放欧美一区| 精品美女永久免费视频| 欧美精品少妇videofree| 国产精品久久久久久一区二区| 91亚洲精品久久久久久久久久久久| 国产成人亚洲综合91精品| 亚洲一区二区三区在线视频| 欧美亚洲成人网| 日韩av网址在线| 久久香蕉国产线看观看网| 亚洲高清免费观看高清完整版| 日韩精品日韩在线观看| 国产精品18久久久久久首页狼| 久久久久久国产精品久久| 91精品国产91久久久久久不卡| 欧美激情乱人伦| 国内精品久久久久久久久| 国产69精品久久久久99| 欧美精品xxx| www.日韩不卡电影av| 97在线视频免费播放| 91色在线视频| 91福利视频网| 2018日韩中文字幕| 色悠久久久久综合先锋影音下载| 国内免费精品永久在线视频| 日韩欧美综合在线视频| 国产在线观看一区二区三区| 91亚洲精华国产精华| 国产成人鲁鲁免费视频a| 欧美激情第1页| 亚洲区一区二区| 久久久精品免费视频| 中文字幕一精品亚洲无线一区| 在线观看视频亚洲| 亚洲精品一区中文字幕乱码| 国产精品18久久久久久首页狼| 日韩精品欧美激情| 国产激情久久久| 38少妇精品导航| 午夜精品福利电影| 亲爱的老师9免费观看全集电视剧| 国产精品综合不卡av| 国内揄拍国内精品少妇国语| 国产香蕉精品视频一区二区三区| 久久夜色撩人精品| 精品国产乱码久久久久久虫虫漫画| 国产精品一区二区性色av| 一区二区三区亚洲| 日韩精品有码在线观看| 亚洲**2019国产| 青草青草久热精品视频在线观看| 亚洲国产天堂久久综合网| 69久久夜色精品国产69乱青草| 国产精品美女无圣光视频| 亚洲视频在线播放| 奇门遁甲1982国语版免费观看高清| 亚洲老司机av| 九九热最新视频//这里只有精品| 日本精品视频在线播放| 在线亚洲男人天堂| 欧美亚洲成人网| 欧洲亚洲妇女av| 91av视频在线播放| 亚洲综合第一页| 亚洲国产精品悠悠久久琪琪| 久久激情五月丁香伊人| 亚洲视频777| 久久久视频在线| 欧美俄罗斯性视频| 日韩高清人体午夜| 91精品国产成人www| 欧美国产日韩一区二区| 亚洲欧美日韩图片| 中文字幕久久精品| 国产成人jvid在线播放| 国产日韩在线观看av| 国产精品成人免费电影| 日韩在线视频二区| 激情成人在线视频| 亚洲性线免费观看视频成熟| 久久久免费在线观看| 九九九久久久久久| 亚洲男人天堂久| 性色av香蕉一区二区| 亚洲福利精品在线| 亚洲黄色在线看| 91亚洲精华国产精华| 亚洲日本中文字幕| 国产精品一区二区性色av| 亚洲国产精品va在线| 亚洲天堂成人在线| 第一福利永久视频精品| 日韩精品在线视频美女| 在线视频国产日韩| 日本精品久久中文字幕佐佐木| 欧美日韩亚洲视频| 正在播放国产一区| 亚洲国产高清高潮精品美女| 久久99热这里只有精品国产| 久久精品99国产精品酒店日本| 亚洲欧洲午夜一线一品| 精品一区二区三区三区| 欧美成人精品不卡视频在线观看| 久久精品国产亚洲一区二区| 成人夜晚看av| 日韩av有码在线| 亚洲精品国产拍免费91在线| 韩日精品中文字幕| 日韩美女视频免费看| 亚洲影院高清在线| 91夜夜揉人人捏人人添红杏| 狠狠色香婷婷久久亚洲精品| 亚洲图片制服诱惑| 欧美性猛交xxx| 成人啪啪免费看| 中文字幕亚洲一区| 国产在线精品自拍| 亚洲国语精品自产拍在线观看| 欧美成人免费一级人片100| 国模视频一区二区三区| 久久九九免费视频| 成人午夜在线观看| 亚洲国产精品va| 51久久精品夜色国产麻豆| 伊人亚洲福利一区二区三区| 91超碰caoporn97人人| 欧美性受xxxx黑人猛交| 欧美精品在线看| 色99之美女主播在线视频| 亚洲欧美日韩另类| 国产福利精品视频| 欧美疯狂做受xxxx高潮| 亚洲国产三级网| 精品一区二区三区三区| 毛片精品免费在线观看| 久久精品99久久久久久久久|