日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

【Java】关于Java中的各种流

發(fā)布時(shí)間:2024/7/5 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】关于Java中的各种流 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1 IO流

1.1 概念

input:輸入(讀取)-----> 流:數(shù)據(jù)(字節(jié)/字符) -----> output:輸出(寫入)
輸入:把硬盤中的數(shù)據(jù),讀取到內(nèi)存中使用
輸出:把內(nèi)存中的數(shù)據(jù),寫入到硬盤中保存
內(nèi)存:臨時(shí)存儲(chǔ)
硬盤:永久存儲(chǔ)
1個(gè)字符 = 2個(gè)字節(jié)
1個(gè)字節(jié)=8個(gè)二進(jìn)制位

頂層父類

輸入流輸出流
字節(jié)流字節(jié)輸入流 InputStream字節(jié)輸出流 OutputStream
字符流字符輸入流 Reader字符輸出流 Writer

2 字節(jié)流

2.1 字節(jié)輸出流OutputStream

它是一個(gè)抽象類

共性成員方法:

  • public void close() :關(guān)閉此輸出流并釋放與此流相關(guān)聯(lián)的任何系統(tǒng)資源。當(dāng)完成流的操作時(shí),必須調(diào)用此方法,釋放系統(tǒng)資源。
  • public void flush() :刷新此輸出流并強(qiáng)制任何緩沖的輸出字節(jié)被寫出。
  • public void write(byte[] b) :將 b.length字節(jié)從指定的字節(jié)數(shù)組寫入此輸出流。
  • public void write(byte[] b, int off, int len) :從指定的字節(jié)數(shù)組寫入 len字節(jié),從偏移量 off開始輸出到此輸出流。
  • public abstract void write(int b) :將指定的字節(jié)輸出流。1次寫1個(gè)字節(jié)。

  • 2.1.1 文件字節(jié)輸出流FileOutputStream

    ,extends OutputStream,把內(nèi)存中的數(shù)據(jù)寫入硬盤的文件中。

    構(gòu)造方法:創(chuàng)建一個(gè) FileOutputStream 對(duì)象。根據(jù)參數(shù)傳遞的文件/文件路徑,創(chuàng)建一個(gè)空文件。把 FileOutputStream 對(duì)象指向創(chuàng)建好的文件。

  • FileOutputStream(String name):文件路徑
  • FileOutputStream(File file):文件

  • 寫入數(shù)據(jù)的原理(內(nèi)存 —> 硬盤)

    Java程序 —> JVM —>OS —> OS調(diào)用寫數(shù)據(jù)的方法 —>把數(shù)據(jù)寫入文件中

    字節(jié)輸出流的使用步驟

  • 創(chuàng)建一個(gè) FileOutputStream 對(duì)象,構(gòu)造方法在傳遞寫入數(shù)據(jù)的目的地
  • 抵用 FileOutputStream 對(duì)象的write方法,把數(shù)據(jù)寫入文件中
  • 釋放資源,清空流占用的內(nèi)存,提高程序效率

  • 把a(bǔ)寫入a.txt文件

    public abstract void write(int b)

    public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream("a.txt");fos.write(97);fos.close();}

    原理:寫數(shù)據(jù)時(shí)會(huì)把十進(jìn)制97轉(zhuǎn)為二進(jìn)制1100001?,硬盤中存儲(chǔ)的數(shù)據(jù)都是字節(jié),1個(gè)字節(jié)等于8個(gè)比特位。文本編輯器在打開文件時(shí)會(huì)查詢編碼表,把字節(jié)轉(zhuǎn)為字符表示,97—>a。


    一次寫入多個(gè)字節(jié)
    public void write(byte[] b)
    public void write(byte[] b, int off, int len) :把數(shù)組的一部分寫入文件

    public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream(new File("b.txt"));byte[] a = {65,66,67,68,69};//ABCDEbyte[] b = {-65,-66,-67,68,69};//烤紻E//如果寫的第一個(gè)字節(jié)是正數(shù) 顯示會(huì)查ascii碼表//如果是負(fù)數(shù),第一個(gè)字節(jié)和第二個(gè)字節(jié)會(huì)組成一個(gè)中文顯示 查詢GBKfos.write(b);fos.write(a,1,2);//BCfos.close();}

    使用String類的方法把字符串轉(zhuǎn)換為字節(jié)數(shù)組。

    public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream(new File("b.txt"));byte[] b = "哈哈哈".getBytes();System.out.println(Arrays.toString(b));fos.write(b);fos.close();}

    GBK:兩個(gè)字節(jié)是一個(gè)中文
    UTF8:三個(gè)字節(jié)是一個(gè)中文


    數(shù)據(jù)的追加寫和換行寫
    追加寫的構(gòu)造方法 append=true
    FileOutputStream(String name, boolean append)
    FileOutputStream(File file, boolean append)
    換行:win【\r\n】mac【/n】linux【/r】

    public static void main(String[] args) throws IOException {//追加寫FileOutputStream fos = new FileOutputStream(new File("b.txt"),true);for (int i = 0; i < 10; i++) {fos.write("哈哈哈".getBytes());//換行寫fos.write("\r\n".getBytes());}fos.close();}

    2.2 字節(jié)輸入流InputStream

    它是一個(gè)抽象類,是所有字節(jié)輸入流類的超類
    共性方法

    • int read()
    • int read(byte[] b)
    • void close

    2.2.1 文件字節(jié)輸入流FileInputStream

    作用:把硬盤中的數(shù)據(jù),讀取到內(nèi)存中使用

    構(gòu)造方法

    • FileInputStream(String name)
    • FileInputStream(File file)

    構(gòu)造方法的作用

  • 創(chuàng)建一個(gè)FileInputStream對(duì)象
  • 把FileInputStream對(duì)象指向指定構(gòu)造方法中要讀取的文件

  • 讀取數(shù)據(jù)原理(硬盤—>內(nèi)存)
    Java程序 —> JVM —>OS —>OS調(diào)用讀取數(shù)據(jù)的方法 —> 讀取文件

    字節(jié)輸出流的使用步驟

  • 創(chuàng)建FileInputStream對(duì)象,構(gòu)造方法中綁定要讀取的數(shù)據(jù)源
  • 調(diào)用FileInputStream對(duì)象的read方法,讀取文件
  • 釋放資源
  • 注意:read每調(diào)用一次指針都會(huì)后移一位,如果while循環(huán)括號(hào)中不保存讀取的值,輸出的就是跳位讀取的值。

    一次讀取一個(gè)字節(jié)

    public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("a.txt");int len = 0;while((len = fis.read())!=-1){//讀取一個(gè)字節(jié)并返回 文件末尾返回-1System.out.print((char) len);}fis.close();}

    一次讀取多個(gè)字節(jié)
    int read(byte[] b):
    注意:byte[]的作用是起緩沖作用,存儲(chǔ)每次讀取到的多個(gè)字節(jié)。數(shù)組長度一般定義為1024(1kb)或者1024的整數(shù)值。int返回值是每次讀取的有效字節(jié)個(gè)數(shù)。

    原理:創(chuàng)建一個(gè)byte數(shù)組,數(shù)組元素的初始值為0。開始讀取,把讀取出的數(shù)據(jù)存入byte數(shù)組,指針移動(dòng),b.length是一次讀取的字節(jié)個(gè)數(shù)。new String()可以把byte數(shù)組轉(zhuǎn)換為字符串輸出。read方法的返回值是有效讀取字節(jié)個(gè)數(shù)。


    public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("a.txt");byte[] bytes = new byte[1024];int len = 0;while((len = fis.read(bytes))!=-1){System.out.print(new String(bytes,0,len));//打印byte中存的有效位}}

    2.3 字節(jié)流練習(xí)-文件復(fù)制

    原理
    創(chuàng)建一個(gè)輸入流的對(duì)象,再創(chuàng)建一個(gè)輸出流的對(duì)象,然后輸入流對(duì)象讀取文件內(nèi)容,寫入輸出流指向的對(duì)象處。
    注意:應(yīng)該先關(guān)閉輸出流(寫),再關(guān)閉輸入流(讀)。因?yàn)閷懲炅艘欢ㄗx完了,但讀完了不一定寫完了。應(yīng)該先開啟輸入流,再開啟輸出流,先讀后寫。

    public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("D:\\1.png");FileOutputStream fos = new FileOutputStream("E:\\1.png");byte[] bytes = new byte[1024];int len = 0;while((len=fis.read(bytes))!=-1){fos.write(bytes,0,len);}fos.close();fis.close();}

    2.4 字節(jié)流讀文件存在的問題

    在讀取中文字符的時(shí)候,可能不會(huì)顯示完整的字符,因?yàn)橐粋€(gè)中文可能占用多個(gè)字節(jié)。按字節(jié)流讀取,每次只能讀取字符的一部分。所以文本文件一般用字符流進(jìn)行讀寫。
    GBK:1個(gè)中文2個(gè)字節(jié)
    UTF8:1個(gè)中文3個(gè)字節(jié)

    3 字符流

    3.1 字符輸入流Reader

    字符輸入流類最頂層的父類,是一個(gè)抽象類。

    共性方法

    • int read()
    • int read(char[] c)
    • void close()

    3.1.1 文件字符輸入流FileReader

    作用:把硬盤文件中的數(shù)據(jù)以字符的方式讀取到內(nèi)存中

    構(gòu)造方法:創(chuàng)建一個(gè)FileReader對(duì)象,把FileReader對(duì)象指向要讀取的文件/文件路徑

    • FileReader(String name)
    • FileReader(File file)

    使用步驟

  • 創(chuàng)建FileReader對(duì)象,構(gòu)造方法中綁定要讀取的數(shù)據(jù)源
  • FileReader對(duì)象調(diào)用read方法
  • 關(guān)閉,釋放資源
  • 一次讀取一個(gè)字符

    public static void main(String[] args) throws IOException {FileReader fd = new FileReader("a.txt");int len = 0;while((len = fd.read())!=-1){System.out.print((char) len);}fd.close();}

    一次讀取多個(gè)字符

    字符數(shù)組 —> 字符串 new String(char[], int off, int len)構(gòu)造方法

    public static void main(String[] args) throws IOException {FileReader fd = new FileReader("a.txt");char[] c = new char[1024];int len = 0;while((len = fd.read(c))!=-1){System.out.print(new String(c,0,len));}fd.close();}

    3.2 字符輸出流Writer

    共性方法

    • void write(int c) 寫入單個(gè)字符。
    • void write(char[] cbuf) 寫入字符數(shù)組。
    • abstract void write(char[] cbuf, int off, int len) 寫入字符數(shù)組的某一部分,off數(shù)組的開始索引,len寫的字符個(gè)數(shù)。
    • void write(String str) 寫入字符串。
    • void write(String str, int off, int len) 寫入字符串的某一部分,off字符串的開始索引,len寫的字符個(gè)數(shù)。
    • void flush() 刷新該流的緩沖。
    • void close() 關(guān)閉此流,但要先刷新它。

    3.2.1 文件字符輸出流FileWriter

    作用:內(nèi)存中的字符數(shù)據(jù)寫入文件中

    構(gòu)造方法

    • FileWriter(String name)
    • FileWriter(File file)

    作用:創(chuàng)建FileWriter對(duì)象,根據(jù)構(gòu)造方法中傳遞的文件/文件路徑創(chuàng)建文件,會(huì)把FileWriter對(duì)象指向創(chuàng)建好的文件中。

    使用步驟

  • 創(chuàng)建FileWriter對(duì)象,構(gòu)造方法中綁定寫入數(shù)據(jù)的目的地。
  • 使用FileWriter中的方法write,把數(shù)據(jù)寫入到內(nèi)存緩沖區(qū)中。(字符轉(zhuǎn)換為字節(jié)的過程)
  • 使用FileWriter中的方法flush,把內(nèi)存緩沖區(qū)的數(shù)據(jù),刷新到文件中。
  • 釋放資源(會(huì)先把內(nèi)存緩沖區(qū)的數(shù)據(jù)刷新到文件中)
  • 寫入單個(gè)字符

    public static void main(String[] args) throws IOException {FileWriter fw = new FileWriter("a.txt");//綁定寫入位置fw.write(97);//寫入緩沖區(qū) 字符-->字節(jié)fw.flush();//寫入文件fw.close();//釋放資源}

    flush和close方法的區(qū)別
    close在關(guān)閉之前會(huì)先把內(nèi)存緩沖區(qū)的數(shù)據(jù)刷新到文件中,但close之后不能繼續(xù)使用write方法。flush同樣也是刷新操作,但flush之后可以繼續(xù)使用write方法。

    其他寫入方法

    • void write(char[] c):寫入字符數(shù)組
    • abstract void write(char[] c, int off, int len):寫入字符數(shù)組的某一部分
    • void write(String str):寫入字符串
    • void write(String str, int off, int len):寫入字符串的某一部分
    public static void main(String[] args) throws IOException {FileWriter fw = new FileWriter("a.txt");char[] c = {'a','b','c','d','e','f'};fw.write(c);fw.write('\n');fw.write(c,3,3);String str = "嘻嘻哈哈呵呵";fw.write(str);fw.write('\n');fw.write(str,1,3);fw.close();}

    續(xù)寫和換行寫
    同字節(jié)流輸出

    public static void main(String[] args) throws IOException {FileWriter fw = new FileWriter("c.txt",true);for (int i = 0; i < 10; i++) {fw.write("哈哈哈"+i);fw.write("\r\n");}fw.close();}

    4 IO流的異常處理

    在JDK1.7之前可以使用try-catch-finally處理流中的一次

    public static void main(String[] args) {FileWriter fw = null;try{fw = new FileWriter("F:\\c.txt",true);for (int i = 0; i < 10; i++) {fw.write("哈哈哈"+i);fw.write("\r\n");}}catch (IOException e){e.printStackTrace();}finally {if(fw != null){try {fw.close();} catch (IOException e) {e.printStackTrace();}}}}

    JDK7的新特性:可以在try后增加一個(gè)()( )(),括號(hào)中可以定義流對(duì)象,那么這個(gè)流對(duì)象的作用域就在try中有效,try執(zhí)行完后,流對(duì)象自動(dòng)釋放,不用寫finally【常用】

    public static void main(String[] args) {try(FileWriter fw = new FileWriter("F:\\c.txt",true)){for (int i = 0; i < 10; i++) {fw.write("哈哈哈"+i);fw.write("\r\n");}}catch (IOException e){e.printStackTrace();}System.out.println("哈哈哈哈哈");}

    JDK9的新特性,try前面可以定義對(duì)象,在try后邊的()中可以引入流對(duì)象的名稱。try執(zhí)行完畢后,流對(duì)象可以釋放掉,不需要寫finally?!静怀S谩?/p> public static void main(String[] args) {FileReader fr = new FileReader("c.txt");FileWriter fw = new FileWriter("d.txt");try(fr;fw){char[] c = new char[1024];int len = 0;while((len = fr.read(c))!=-1){fw.write(c);}fw.flush();}catch (IOException e){e.printStackTrace();}System.out.println("哈哈哈哈哈");}

    5 屬性集

    java.util.Properties 繼承于Hashtable,來表示一個(gè)持久的屬性集。是唯一一個(gè)和IO流相結(jié)合的集合。

    它使用鍵值結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),每個(gè)及其對(duì)應(yīng)都是一個(gè)字符串。該類也被許多Java類使用,比如獲取系統(tǒng)屬性時(shí), System.getProperties 方法就是返回一個(gè)Properties 對(duì)象。

    使用Properties存儲(chǔ)數(shù)據(jù)并遍歷取出

    操作字符串的特有方法

    • Object setProperty(String key, String value):相當(dāng)于map.put(k, v)
    • String getProperty(String key):相當(dāng)于map.get(k)
    • Set <String> stringPropertyNames():相當(dāng)于map.keySet()
    public static void main(String[] args) {Properties prop = new Properties();prop.setProperty("張三","20");prop.setProperty("李四","25");prop.setProperty("王五","30");Set<String> set = prop.stringPropertyNames();for(String key: set){String value = prop.getProperty(key);System.out.println(key+" "+value);}}
    • 可以使用store方法把集合中的臨時(shí)數(shù)據(jù),持久化寫入硬盤中存儲(chǔ)
    • void store(OutputStream out, String comments):字節(jié)輸出流,不能寫中文。
    • void store(Writer writer, String comments):字符輸出流,可以寫中文

    comments是注釋,用來解釋保存的文件是做什么的,不可以使用中文,默認(rèn)是Unicode編碼,一般使用空字符串

    使用步驟

  • 創(chuàng)建一個(gè)Proprorities對(duì)象,添加數(shù)據(jù)
  • 創(chuàng)建字節(jié)輸出流/字符輸出流對(duì)象,構(gòu)造方法綁定輸出位置
  • 使用store方法把集合中的臨時(shí)數(shù)據(jù)持久化寫入硬盤中。
  • 釋放輸出流對(duì)象
  • public static void main(String[] args) throws IOException {Properties prop = new Properties();prop.setProperty("張三","20");prop.setProperty("李四","25");prop.setProperty("王五","30");FileWriter fw = new FileWriter("e.txt");prop.store(fw, "");fw.close();}
    • 可以使用load方法,把硬盤中保存的文件,讀取到集合中使用
    • void load(InputStream in):字節(jié)輸入流,不能讀取含有中文的鍵值對(duì)
    • void load(Reader r):字符輸入流,可以讀取含有中文的鍵值對(duì)

    使用步驟

  • 創(chuàng)建一個(gè)Properties對(duì)象,load堆區(qū)保存鍵值對(duì)的文件
  • 遍歷Properties集合
  • 注意

    • 鍵值對(duì)文件中,鍵和值默認(rèn)的連接符可以使用=、空格
    • 可以使用#來注釋,被注釋的鍵值對(duì)不會(huì)再讀取
    • 鍵和值默認(rèn)都是字符串,不用再加引號(hào)
    public static void main(String[] args) throws IOException {Properties prop = new Properties();prop.load(new FileReader("f.txt"));Set<String> set = prop.stringPropertyNames();for(String key: set){System.out.println(key+" "+prop.getProperty(key));}}

    6 緩沖流

    緩沖流,也叫高效流,是對(duì)4個(gè)基本的FileXxx 流的增強(qiáng),所以也是4個(gè)流,按照數(shù)據(jù)類型分類:
    字節(jié)緩沖流: BufferedInputStream , BufferedOutputStream
    字符緩沖流: BufferedReader , BufferedWriter
    緩沖流的基本原理,是在創(chuàng)建流對(duì)象時(shí),會(huì)創(chuàng)建一個(gè)內(nèi)置的默認(rèn)大小的緩沖區(qū)數(shù)組,通過緩沖區(qū)讀寫,減少系統(tǒng)IO次數(shù),從而提高讀寫的效率。

    6.1 字節(jié)緩沖流

    6.1.1 字節(jié)緩沖輸出流BfferedOutputStream

    繼承自O(shè)utputStream,可使用父類共性方法(見2.1)

    構(gòu)造方法

    • BufferedOutputStream(OutputStream out):創(chuàng)建一個(gè)新的緩沖輸出流,以數(shù)據(jù)寫入指定的底層輸出流。
    • BufferedOutputStream(OutputSteam out, int size):創(chuàng)建一個(gè)新的緩沖輸出流,以將具有指定緩沖區(qū)大小的數(shù)據(jù)寫入指定的底層輸出流。

    使用步驟

  • 創(chuàng)建FileOutputStream對(duì)象,構(gòu)造方法中綁定輸出位置。
  • 創(chuàng)建BufferedOutputStream對(duì)象,構(gòu)造方法中傳遞fos對(duì)象,提高fos對(duì)象效率。
  • 使用bos對(duì)象的write方法,把數(shù)據(jù)寫入到內(nèi)部緩沖區(qū)中。
  • 使用bos對(duì)象的flush方法,把緩沖區(qū)的數(shù)據(jù)刷新到文件中。
  • 釋放資源,close會(huì)先調(diào)用flush刷新數(shù)據(jù)再關(guān)閉(所以第四步可省略)
  • public static void main(String[] args) throws IOException {FileOutputStream fos = new FileOutputStream("b.txt");BufferedOutputStream bos = new BufferedOutputStream(fos);bos.write("寫入內(nèi)部緩沖區(qū)".getBytes());//字節(jié)輸出流 用字節(jié)bos.flush();bos.close();}

    6.1.2 字節(jié)緩沖輸入流BfferedInputStream

    繼承自InputStream,可使用父類共性方法(見2.2)

    構(gòu)造方法

    • BufferedInputStream(InputStream in):創(chuàng)建一個(gè)新的緩沖輸入流,保存參數(shù)輸入流in。
    • BufferedInputStream(InputSteam in, int size):創(chuàng)建一個(gè)具有指定緩沖區(qū)大小的BufferedInputStream保存其參數(shù),即輸入流。

    使用步驟

  • 創(chuàng)建FileInputStream對(duì)象,構(gòu)造方法中綁定讀取位置。
  • 創(chuàng)建BufferedInputStream對(duì)象,構(gòu)造方法中傳遞fis對(duì)象,提高fis對(duì)象的讀取效率。
  • 使用bis對(duì)象的read方法,把數(shù)據(jù)寫入到內(nèi)部緩沖區(qū)中。
  • 釋放資源。
  • public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("a.txt");BufferedInputStream bis = new BufferedInputStream(fis);/*int len = 0;while((len = bis.read()) != -1){System.out.print((char)len);}bis.close();*/byte[] bytes = new byte[1024];int len = 0;while((len = bis.read(bytes))!=-1){System.out.println(new String(bytes));}}

    6.1.3 基本和緩沖效率比較

    public static void main(String[] args) throws IOException {long s = System.currentTimeMillis();FileInputStream fis = new FileInputStream("D:\\1.png");FileOutputStream fos = new FileOutputStream("E:\\1.png");BufferedInputStream bis = new BufferedInputStream(fis);BufferedOutputStream bos = new BufferedOutputStream(fos);byte[] bytes = new byte[1024];int len = 0;while((len=bis.read(bytes))!=-1){bos.write(bytes,0,len);}bos.close();bis.close();long e = System.currentTimeMillis();System.out.println(e-s);}

    文件復(fù)制4MB的ppt的效率比較:

    基本流(一次讀一個(gè)字節(jié)):17757 ms
    緩沖流(一次讀一個(gè)字節(jié)):121 ms
    基本流 + 數(shù)組緩沖區(qū)(一次讀多個(gè)字節(jié)):27 ms
    緩沖流 + 數(shù)組緩沖區(qū)(一次讀多個(gè)字節(jié)):9 ms

    6.2 字符緩沖流

    6.2.1 字符緩沖輸出流BufferedWriter

    繼承自Writer,可使用父類共性方法(見3.2)

    構(gòu)造方法

    • BufferedWriter(Writer out):創(chuàng)建一個(gè)使用默認(rèn)大小輸出緩沖區(qū)的緩沖字符輸出流。
    • BufferedWriter(Writer out, int size):創(chuàng)建一個(gè)使用指定大小輸出緩沖區(qū)的緩沖字符輸出流。

    特有方法

    • void newLine():寫入一個(gè)行分隔符,它會(huì)根據(jù)不同的操作系統(tǒng),獲取不同的行分隔符。

    使用步驟

  • 創(chuàng)建字符輸出流對(duì)象,構(gòu)造方法中傳遞寫入地址
  • 創(chuàng)建字符緩沖區(qū)輸出流對(duì)象,構(gòu)造方法中傳遞字符輸出流
  • 調(diào)用flush,將內(nèi)存緩沖區(qū)中的數(shù)據(jù)刷新到文件中
  • 釋放資源
  • public static void main(String[] args) throws IOException {BufferedWriter bw = new BufferedWriter(new FileWriter("b.txt"));for (int i = 0; i < 10; i++) {bw.write("哈哈哈哈");bw.newLine();bw.write("嘻嘻嘻嘻");bw.newLine();}bw.close();}

    6.2.2 字符緩沖輸入流BufferedReader

    繼承自Reader,可使用父類共性方法(見3.1)

    構(gòu)造方法

    • BufferedReader(Reader in):創(chuàng)建一個(gè)使用默認(rèn)大小輸入緩沖區(qū)的緩沖字符輸入流。
    • BufferedReader(Reader in, int size):創(chuàng)建一個(gè)使用指定大小輸入緩沖區(qū)的緩沖字符輸入流。

    特有方法

    • String readLine():讀取一行文本,讀取一行數(shù)據(jù),流末尾返回null,readLine不讀換行符

    使用步驟

  • 創(chuàng)建字符輸入流對(duì)象,構(gòu)造方法中傳遞讀取地址
  • 創(chuàng)建字符緩沖區(qū)輸入流對(duì)象,構(gòu)造方法中傳遞字符輸入流
  • 調(diào)用read/readLine讀取
  • 釋放資源
  • public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new FileReader("b.txt"));String line = null;while((line = br.readLine())!=null){System.out.println(line);}}

    6.3 緩沖流練習(xí)-文本排序

    b.txt內(nèi)容:
    7.77777777777777
    3.張三3333333333
    5.王五5555555555
    1.大一1111111111
    4.李四4444444444
    2.小二2222222222
    6.六六6666666666

    public static void main(String[] args) throws IOException {Map<String , String> map = new HashMap<>();BufferedReader br = new BufferedReader(new FileReader("b.txt"));BufferedWriter bw = new BufferedWriter(new FileWriter("nb.txt"));String line;while((line = br.readLine())!=null){String[] split = line.split("\\.");map.put(split[0],split[1]);}//map會(huì)自動(dòng)排序for(String key: map.keySet()){String value = map.get(key);bw.write(key+"."+value);bw.newLine();}bw.close();br.close();}

    7 轉(zhuǎn)換流

    7.1 字符編碼和字符集

    字符編碼
    計(jì)算機(jī)中儲(chǔ)存的信息都是用二進(jìn)制數(shù)表示的,而我們?cè)谄聊簧峡吹降臄?shù)字、英文、標(biāo)點(diǎn)符號(hào)、漢字等字符是二進(jìn)制數(shù)轉(zhuǎn)換之后的結(jié)果。按照某種規(guī)則,將字符存儲(chǔ)到計(jì)算機(jī)中,稱為編碼 。反之,將存儲(chǔ)在計(jì)算機(jī)中的二進(jìn)制數(shù)按照某種規(guī)則解析顯示出來,稱為解碼 。比如說,按照A規(guī)則存儲(chǔ),同樣按照A規(guī)則解析,那么就能顯示正確的文本f符號(hào)。反之,按照A規(guī)則存儲(chǔ),再按照B規(guī)則解析,就會(huì)導(dǎo)致亂碼現(xiàn)象。

    字符編碼Character Encoding : 就是一套自然語言的字符與二進(jìn)制數(shù)之間的對(duì)應(yīng)規(guī)則。

    字符集
    字符集 Charset :也叫編碼表。是一個(gè)系統(tǒng)支持的所有字符的集合,包括各國家文字、標(biāo)點(diǎn)符號(hào)、圖形符號(hào)、數(shù)字等。計(jì)算機(jī)要準(zhǔn)確的存儲(chǔ)和識(shí)別各種字符集符號(hào),需要進(jìn)行字符編碼,一套字符集必然至少有一套字符編碼。常見字符集有ASCII字符集、GBK字符集、Unicode字符集等。

    ASCII是最基本的編碼表,GBK是中文編碼表
    Unicode是萬國碼,兼容各種語言,是應(yīng)用中優(yōu)先采用的編碼。

    7.2 編碼常見問題

    例如:在IDEA中,使用FileReader 讀取項(xiàng)目中的文本文件。由于IDEA的設(shè)置,都是默認(rèn)的UTF-8編碼,所以沒有任何問題。但是,當(dāng)讀取Windows系統(tǒng)中創(chuàng)建的文本文件時(shí),由于Windows系統(tǒng)的默認(rèn)是GBK編碼,就會(huì)出現(xiàn)亂碼。

    解決方法:使用轉(zhuǎn)換流

    7.3 轉(zhuǎn)換流相關(guān)內(nèi)容

    字節(jié)轉(zhuǎn)換為字符(解碼)
    FileInputStream —> 查詢編碼表 —> FileReader

    7.3.1 OutputStreamWriter

    字符流通向字節(jié)流的橋梁
    可以指定編碼格式
    寫入你想寫入的編碼格式的文件中

    構(gòu)造方法

    • OutputStreamWriter(OutputStream out):創(chuàng)建使用默認(rèn)字符編碼的OutputStreamWriter(utf8)
    • OutputStreamWriter(OutputStream out, String charSet):創(chuàng)建使用指定字符編碼的OutputStreamWriter

    使用步驟

  • 創(chuàng)建OutputStreamWriter對(duì)象,構(gòu)造方法中傳遞字節(jié)輸出流和指定編碼集
  • 使用osw對(duì)象中的write,把字符轉(zhuǎn)換為字節(jié)存在緩沖區(qū)中
  • 使用osw對(duì)象中的flush把字節(jié)刷新到文件中
  • 釋放資源
  • 你好 GBK 4字節(jié) UTF8 6字節(jié)

    public static void main(String[] args) throws IOException {OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk.txt"),"gbk");osw.write("你好");osw.close();}

    7.3.2 InputStreamReader

    字節(jié)流通向字符流的橋梁
    可以指定編碼格式
    讀取字節(jié)解碼為字符 把看不懂的變成看得懂的

    構(gòu)造方法

    • InputStreamReader(InputStream in):創(chuàng)建使用默認(rèn)字符編碼的OutputStreamWriter(utf8)
    • InStreamReader(InputStream in, String charSet):創(chuàng)建使用指定字符編碼的InputStreamReader

    使用步驟

  • 創(chuàng)建InputStreamReader對(duì)象,構(gòu)造方法中傳遞字節(jié)輸入流和指定編碼集
  • 使用isw對(duì)象中的read讀取文
  • 釋放資源
  • 注意:如果文件編碼和指定編碼不一致,則會(huì)發(fā)生亂碼

    public static void main(String[] args) throws IOException {InputStreamReader isr = new InputStreamReader(new FileInputStream("utf8.txt"),"utf-8");int len = 0;while((len = isr.read())!=-1){System.out.print((char)len);}isr.close();}

    7.4 練習(xí):轉(zhuǎn)換文件編碼

    將GBK編碼的文本文件,轉(zhuǎn)換為UTF8編碼的文本文件

    public static void main(String[] args) throws IOException {InputStreamReader isr = new InputStreamReader(new FileInputStream("gbk.txt"),"gbk");OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("gbk2utf8.txt"),"utf-8");int len = 0;while((len = isr.read()) != -1){osr.write(len);}osr.close();isr.close();}

    8 序列化和反序列化

    8.1 概念

    ObjectOutputStream對(duì)象的序列化流
    把對(duì)象以流的方式寫入到文件中保存,叫寫對(duì)象,也叫對(duì)象的序列化。對(duì)象中包含的不僅是字符,使用字節(jié)流。

    ObjectInputStream對(duì)象的反序列化流
    把文件中的對(duì)象,以流的方式讀取出來,叫讀對(duì)象,也叫對(duì)象的反序列化。文件保存的都是字節(jié),使用字節(jié)流。

    8.2 對(duì)象的序列化流ObjectOutputStream

    構(gòu)造方法

    • ObjectOutputStream(OutputStream out)

    特有方法

    • void writeObject(Object obj)

    使用步驟

  • 創(chuàng)建ObjectOutputStream對(duì)象,構(gòu)造方法中傳遞字節(jié)輸出流
  • 使用writeObject方法寫入對(duì)象
  • 釋放資源
  • 序列化和反序列化時(shí),會(huì)拋出NotSerializableException沒有序列化異常。
    類通過實(shí)現(xiàn)Serializable接口以啟動(dòng)序列化功能,沒有實(shí)現(xiàn)此接口的類無法使其任何狀態(tài)序列化或反序列化。
    Serializable接口也叫標(biāo)記型接口,進(jìn)行序列化和反序列化,必須要實(shí)現(xiàn)Serializable接口,給類添加標(biāo)記。在使用時(shí),會(huì)檢測是否有標(biāo)記。

    使用前提
    Person類的實(shí)現(xiàn) 要加上implement Serializable

    public static void main(String[] args) throws IOException {ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.txt"));oos.writeObject(new Person("張三",15));oos.close();}

    8.3 對(duì)象的反序列化流ObjectInputStream

    構(gòu)造方法

    • ObjectInputStream(InputStream in)

    特有方法

    • void readObject(Object obj) 讀取對(duì)象

    使用步驟

  • 創(chuàng)建ObjectOutputStream對(duì)象,構(gòu)造方法中傳遞字節(jié)輸入流
  • 使用writeObject方法讀取對(duì)象
  • 釋放資源
  • 打印對(duì)象
  • readObject方法聲明拋出了ClassFoundException,class文件找不到異常,當(dāng)不存在對(duì)象的class文件時(shí)拋出異常
    使用前提
    Person類的實(shí)現(xiàn) 要加上implement Serializable
    對(duì)象的class類文件要存在

    ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Person.txt")); Object o = ois.readObject(); ois.close(); System.out.println(o);

    【注意!!!】
    InvalidClassException異常:序列化之后對(duì)類進(jìn)行更改之后,不重新序列化,而是直接反序列化會(huì)出現(xiàn)異常。

    因?yàn)閖avac編譯器會(huì)把java文件編譯生成class文件。類如果實(shí)現(xiàn)了Serializable接口,就會(huì)根據(jù)類的定義給類的class文件添加一個(gè)序列化號(hào)serialVersionUID,輸出的文件也會(huì)寫入這個(gè)ID,反序列化的時(shí)候,會(huì)使用class文件的序列號(hào)和輸出文件的序列號(hào)比較,如果ID一致,則反序列化一致,否則會(huì)拋出InvalidClassException異常。

    而修改了類的定義之后,會(huì)給class文件重新編譯生成一個(gè)新的序列號(hào),但是輸出文件的序列號(hào)沒有改。

    解決方案:手動(dòng)給類加一個(gè)序列號(hào)。無論是否修改類都不再修改序列號(hào)。

    自定義類中添加成員常量。

    private static final long serialVersionID = 1L;

    瞬態(tài)關(guān)鍵字transient
    static靜態(tài)關(guān)鍵字:靜態(tài)優(yōu)先于非靜態(tài)加載到內(nèi)存中,(靜態(tài)優(yōu)先于對(duì)象),所以static修飾的成員變量是不能被序列化的,序列化的都是對(duì)象。
    【在上例中,如果Person類的age成員變量是靜態(tài)的,序列化和非序列化age將永遠(yuǎn)是初始值0,無法更改】

    transient瞬態(tài)關(guān)鍵字:被它修飾的成員變量不能被序列化。如果想要對(duì)象中的成員變量不被序列化,可以使用瞬態(tài)關(guān)鍵字。

    8.4 練習(xí):序列化集合

    當(dāng)我們想在文件中保存多個(gè)對(duì)象的時(shí)候,可以把對(duì)象存在集合中,對(duì)集合進(jìn)行序列化和反序列化。

    public static void main(String[] args) throws IOException, ClassNotFoundException {ArrayList<Person> list = new ArrayList<>();list.add(new Person("張三",15));list.add(new Person("李四",19));list.add(new Person("王五",20));ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("PersonList.txt"));oos.writeObject(list);ObjectInputStream ois = new ObjectInputStream(new FileInputStream("PersonList.txt"));Object o = ois.readObject();ArrayList<Person> list2 = (ArrayList<Person>) o;for (Person p : list2){System.out.println(p);}ois.close();oos.close();}

    9 打印流

    9.1 PrintSteam類

    平時(shí)我們?cè)诳刂婆_(tái)打印輸出,是調(diào)用print方法和println方法完成的,這兩個(gè)方法都來自于java.io.PrintStream類,該類能夠方便地打印各種數(shù)據(jù)類型的值,是一種便捷的輸出方式。

    特點(diǎn)

    • 不會(huì)拋出IO異常
    • 只負(fù)責(zé)輸出,不負(fù)責(zé)讀取
    • 特有方法print、println

    構(gòu)造方法

    • PrintStream(File file):輸出目的地是一個(gè)文件
    • PrintStream(OutputStream out):輸出目的地是一個(gè)字節(jié)輸出流
    • PrintStream(String path):輸出目的地是一個(gè)文件路徑

    注意

    • 如果用繼承父類的write方法寫數(shù)據(jù),查看數(shù)據(jù)的時(shí)候就會(huì)查詢編碼表,再打印
    • 如果使用特有方法print和println則會(huì)原樣輸出
    public static void main(String[] args) throws IOException, ClassNotFoundException {PrintStream ps = new PrintStream("a.txt");ps.write(97);ps.write('\n');ps.println(97);ps.print("a1#$@哈哈哈");ps.close();}

    可以改變輸出語句的目的地,即打印流的流向。
    輸出語句,默認(rèn)在控制臺(tái)輸出,使用System.setOut方向改變輸出語句的目的地改為參數(shù)中傳遞的打印流的目的地。

    public static void main(String[] args) throws IOException, ClassNotFoundException {System.out.println("控制臺(tái)輸出:哈哈哈");PrintStream ps = new PrintStream("打印流輸出");System.setOut(ps);System.out.println("打印流輸出:哈哈哈");//控制臺(tái)不輸出這一句 而是寫在"打印流輸出"文件中}

    總結(jié)

    以上是生活随笔為你收集整理的【Java】关于Java中的各种流的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    九九综合在线 | 国产资源av | 亚洲每日更新 | bbb搡bbb爽爽爽 | 天天干亚洲 | 在线导航av | 中文字幕一区二区三区乱码在线 | 欧美在线一二 | av在线看网站 | 成人黄色av网站 | 狠狠操狠狠操 | 五月婷婷激情六月 | 特黄特色特刺激视频免费播放 | 97成人超碰 | 天天射天天干天天爽 | 香蕉视频在线视频 | 在线日韩中文字幕 | 国产精品嫩草55av | 99久久99久国产黄毛片 | 亚洲精品自拍视频在线观看 | 久久亚洲专区 | 天天夜夜操 | 久久影院午夜论 | 国产国产人免费人成免费视频 | 国产精品视频在线看 | 亚洲狠狠丁香婷婷综合久久久 | 夜夜澡人模人人添人人看 | 最近中文字幕完整视频高清1 | 在线看成人av | 五月婷激情 | 美女视频免费一区二区 | 国产精品自拍在线 | 国产午夜精品一区二区三区嫩草 | 国产精品免费观看国产网曝瓜 | 国产精品美女免费视频 | 中文字幕黄网 | 国产精品一区二区免费视频 | 欧美精品免费一区二区 | 国产专区视频 | 国产一级不卡毛片 | 国产精品久久久久久久久久久杏吧 | 日韩激情视频在线观看 | 在线国产能看的 | 久久婷婷一区 | www国产亚洲精品久久麻豆 | 91精品国产高清 | 黄色网在线播放 | 黄色亚洲片 | 国产精品自产拍在线观看桃花 | 日韩中文字幕免费视频 | 国产一区二区三区视频在线 | www天天干| 免费在线视频一区二区 | 国产欧美精品一区二区三区四区 | 久久婷婷色综合 | 色爱成人网 | 热99在线视频 | 精品在线播放视频 | 欧美美女激情18p | 国产精品美女久久久网av | 99精品免费视频 | 九九热免费观看 | 国产在线观看av | 日韩精品一区二区在线 | 极品久久久久 | 黄色官网在线观看 | www久久99| 国产原创av在线 | 久久精视频 | 在线av资源 | 中文字幕一区二区三区四区久久 | av大片网址| a级国产片| 国产精品一区在线播放 | 久久精品久久综合 | 天堂视频中文在线 | 黄色的视频网站 | 夜夜操天天操 | 97人人艹 | 欧美 日韩 国产 中文字幕 | 成人禁用看黄a在线 | 激情久久伊人 | 成人亚洲免费 | 91av短视频 | 国产剧情一区 | 国产视频在线观看一区二区 | 久久免费中文视频 | 久草在线网址 | 中文久草 | 视频三区| 国产乱码精品一区二区蜜臀 | 久草在线中文视频 | 九九综合久久 | 日韩com | www成人精品 | 午夜精品av | 日日躁你夜夜躁你av蜜 | 欧美色综合天天久久综合精品 | 国产小视频在线观看免费 | 字幕网在线观看 | 色在线视频网 | 69视频网站 | 日韩黄色免费电影 | 成片免费观看视频999 | 国产高清中文字幕 | 在线观看亚洲精品 | 一区二区精品在线 | 日韩欧美69 | 欧美精品久久久久久久久老牛影院 | 免费观看丰满少妇做爰 | 亚洲欧洲国产视频 | 欧美极品裸体 | 中文字幕欧美日韩va免费视频 | 国产在线观看高清视频 | 国产少妇在线观看 | 久久免费视频这里只有精品 | 久久久国产一区二区三区 | 国产精品嫩草影视久久久 | 日韩欧美视频在线免费观看 | 欧美精品天堂 | 在线 高清 中文字幕 | 91女子私密保健养生少妇 | 91精品国产亚洲 | 日韩av电影手机在线观看 | 国产精品视频99 | 亚洲国产中文字幕在线观看 | 91桃色在线观看视频 | www.干| 日韩精品视频在线观看网址 | 成人黄色在线视频 | 中文字幕在线观看完整版 | 麻豆国产在线视频 | 丰满少妇一级 | 日韩高清黄色 | 人人澡人人爽 | 在线天堂v| 深夜免费福利在线 | 天天久久夜夜 | 日韩美视频 | 99免费看片 | 在线观看福利网站 | 五月激情丁香婷婷 | 99视频在线免费看 | 黄网站色欧美视频 | 日韩精品免费在线观看视频 | 久久九九视频 | 国产精品网站 | 久久精品女人毛片国产 | 波多野结衣在线观看一区二区三区 | 国产精品久久久久永久免费观看 | 日日夜夜精品视频天天综合网 | www日韩视频 | 日日干,天天干 | av日韩精品 | 日韩av在线网站 | 婷婷在线免费 | 99热9| 激情久久五月 | 欧美了一区在线观看 | 二区三区在线观看 | 久久久久久久久久久久99 | www.狠狠干| 免费黄色a级毛片 | 激情五月六月婷婷 | 久久这里只有精品9 | 黄色电影在线免费观看 | 91传媒在线看 | 韩日在线一区 | 欧美一级电影免费观看 | 久久9视频 | 国产精品视频最多的网站 | 麻豆精品传媒视频 | 日日草av | www178ccom视频在线 | 色欧美88888久久久久久影院 | 狠狠色丁香婷婷综合欧美 | 夜夜躁狠狠躁日日躁 | 日本福利视频在线 | 99久热精品| 免费看成人片 | 国产精品午夜久久久久久99热 | 成人精品久久 | 免费看一级黄色大全 | 国产精品麻豆99久久久久久 | 超碰97在线资源站 | 欧美精品免费视频 | 亚洲专区中文字幕 | 最新国产在线 | 日韩一区二区三区高清在线观看 | www久久久久 | 日本久久中文字幕 | 国内精品久久久久影院优 | 国产美女久久 | 国产无区一区二区三麻豆 | 国产精品毛片一区二区三区 | 久久九九久久 | 在线日韩av | av经典在线| 久久艹国产视频 | 激情文学综合丁香 | av成人免费观看 | 区一区二在线 | 婷婷成人亚洲综合国产xv88 | 日韩精品一区二区免费 | 在线视频久久 | 久久精品美女视频网站 | 久久亚洲福利视频 | 成人app在线免费观看 | 亚洲天堂网在线视频 | 午夜国产福利视频 | 国产一区二三区好的 | 91看国产| 久草爱视频 | 欧美日韩在线观看一区二区三区 | 国色天香在线观看 | 欧美伊人网 | 成人在线视频论坛 | 四虎在线免费观看 | 一二区精品 | 久久电影国产免费久久电影 | 中文字幕在线中文 | 九九免费精品 | 久久久久久久久久久福利 | 日韩激情小视频 | 在线黄色观看 | 亚洲精品99久久久久久 | 欧美久久久久久久久久 | 99久久日韩精品免费热麻豆美女 | 亚洲国产欧美在线看片xxoo | 99欧美精品 | 国产精品不卡视频 | 日韩网站中文字幕 | 国产高清av免费在线观看 | 91一区二区三区在线观看 | 91成人精品一区在线播放69 | 久久99精品一区二区三区三区 | 欧美一区中文字幕 | 中文视频在线播放 | 亚洲小视频在线观看 | 久久欧美精品 | 久久久久女人精品毛片 | 国产黄色免费 | 欧美日韩免费在线视频 | 久久精品99精品国产香蕉 | 久久国产精品第一页 | 久久99亚洲网美利坚合众国 | 涩五月婷婷 | 三级动态视频在线观看 | 国产一级在线免费观看 | 麻豆mv在线观看 | av黄色国产 | 六月丁香婷婷久久 | 国产黄色精品在线观看 | 国产a级精品| 91天堂影院 | 亚洲视频www| 天天操天天射天天舔 | 四虎亚洲精品 | 国产韩国精品一区二区三区 | 在线日本v二区不卡 | 天天操狠狠操夜夜操 | 日韩免费看 | 天天干天天怕 | 精品av在线播放 | 丁香婷婷成人 | 99麻豆视频 | 99视频在线精品国自产拍免费观看 | 97人人爽人人 | 国产一区免费观看 | 久草精品在线播放 | 日日夜精品 | 2020天天干天天操 | 国产精品2019| 午夜私人影院久久久久 | 综合国产在线 | 欧美一级日韩三级 | 人人爽久久久噜噜噜电影 | 欧美成a人片在线观看久 | 精品一二三四在线 | 操久久免费视频 | 久久毛片网 | 日韩性xxx| 久久久综合色 | 成人午夜黄色影院 | 欧美日本不卡高清 | 91麻豆网站 | 国产中文 | 99久久这里有精品 | 午夜影视一区 | 亚洲在线国产 | 久久精品一区二区三区中文字幕 | 欧美色综合久久 | 国产精品免费在线视频 | 久久精品久久精品久久精品 | 久久影院精品 | 精品毛片在线 | 涩涩资源网 | 欧美日韩后| 麻花豆传媒一二三产区 | 嫩模bbw搡bbbb搡bbbb | 中文字幕在线观看视频一区二区三区 | 欧美日韩国产一区二区在线观看 | 亚洲午夜久久久久久久久久久 | 国产在线观看免费 | 亚洲天堂网视频 | 国产精品电影一区 | 成人免费一区二区三区在线观看 | 色在线免费 | 97视频在线观看成人 | 欧美性春潮| 国产精品久久婷婷六月丁香 | 精品视频9999| 日韩在线无| 国外成人在线视频网站 | 亚洲a资源 | 色999视频 | 91成人精品观看 | av黄色免费在线观看 | 欧美激情奇米色 | 永久免费av在线播放 | 成人香蕉视频 | 西西人体4444www高清视频 | 欧美亚洲成人免费 | 成人一级片免费看 | 成人黄色电影在线观看 | 亚洲一区网| 国产精品久久久久国产a级 激情综合中文娱乐网 | 97精品国产手机 | 制服丝袜在线91 | 日韩免费在线网站 | 午夜精品久久久久久久99 | 黄色小说在线观看视频 | 亚洲一区二区视频在线播放 | 最近更新好看的中文字幕 | 一级黄色片毛片 | 亚洲精品影院在线观看 | 97在线观看免费高清完整版在线观看 | 天天操天天操天天爽 | 91免费看片黄 | 久久视频免费在线 | 国产午夜精品视频 | 久草视频在线看 | 奇米影视四色8888 | 久久歪歪 | 国产午夜精品一区二区三区嫩草 | 人人插人人看 | 伊人久久婷婷 | 亚洲欧美综合 | a级国产乱理伦片在线观看 亚洲3级 | 国产日韩欧美在线免费观看 | 可以免费观看的av片 | 中文字幕av全部资源www中文字幕在线观看 | 在线观看91 | www.狠狠操.com | 国产毛片在线 | 超级av在线| 中文字幕在线观看国产 | 成人在线视频一区 | 国产精品国产三级国产 | 国产精品久久久一区二区 | 欧美激情视频三区 | 中文久久精品 | 97视频人人| 中文在线天堂资源 | 美女视频黄色免费 | 亚洲日韩欧美一区二区在线 | 成人aⅴ视频 | 国产精品麻豆视频 | 久久综合久久八八 | 日本精品久久久久中文字幕5 | 精品国产一区二区三区久久久蜜月 | 免费污片 | 五月天婷婷丁香花 | 久久久香蕉视频 | 日本精品va在线观看 | 中文字幕乱码电影 | 99久久夜色精品国产亚洲 | 国产综合福利在线 | 欧美精品乱码久久久久久 | 7799av| 亚洲成人黄色 | 天天在线视频色 | 91日韩在线播放 | 插婷婷| 三上悠亚一区二区在线观看 | 免费看三级黄色片 | 手机av在线免费观看 | 国产成人精品久久久 | 欧美另类人妖 | 男女视频久久久 | 日韩精品视频免费在线观看 | 特级西西人体444是什么意思 | 狠狠插狠狠操 | 成人小视频免费在线观看 | 亚洲美女视频在线 | 国产精品中文字幕在线观看 | 亚洲另类久久 | 久草国产在线 | 亚洲美女视频在线 | 国色天香在线 | 免费三级影片 | 欧美怡红院视频 | 国产字幕在线播放 | www178ccom视频在线 | 免费a v在线 | 青青草国产免费 | 日韩在线精品一区 | 国产日韩在线看 | 91免费在线视频 | 日韩在线视频国产 | 国产免费高清视频 | 在线视频一区二区 | 天天干,天天操,天天射 | a级国产毛片 | 一本到视频在线观看 | 婷婷深爱五月 | 制服丝袜欧美 | 中字幕视频在线永久在线观看免费 | 99热在线网站 | 日本女人在线观看 | 国产亚洲亚洲 | 西西44人体做爰大胆视频 | 国产精品99久久久久久武松影视 | 特级黄色视频毛片 | 国产精品久久久久久久免费观看 | 日韩中文字幕在线看 | 日韩三级在线观看 | www.色午夜 | 黄色1级毛片| 亚洲一区日韩在线 | 精品国产伦一区二区三区观看体验 | 四虎成人免费影院 | 中文字幕资源网 | 麻豆传媒视频在线免费观看 | 日韩三级视频在线观看 | 人人射人人澡 | 亚洲精品字幕在线观看 | 久久免费国产精品 | www.天天射.com | 九色精品在线 | 综合伊人av | 毛片永久新网址首页 | 亚洲高清网站 | 国产精品视频久久 | 亚洲国内精品 | 九九久久久久99精品 | 狠狠久久 | 国产精品一区二区62 | 国产日韩欧美在线影视 | 久久综合欧美精品亚洲一区 | 中文资源在线官网 | 日韩精品欧美精品 | 欧美激情综合五月色丁香 | 午夜视频久久久 | 亚洲免费在线观看视频 | 日韩欧美在线免费观看 | 日韩v在线 | 亚洲欧洲精品一区二区精品久久久 | 亚洲精品电影在线 | 国产精品国产三级在线专区 | 草久久影院 | 国产成人精品综合久久久久99 | 456成人精品影院 | 九九热在线观看 | 天天艹天天 | 天天拍天天爽 | 国产精品成人一区二区三区 | 在线中文字幕av观看 | 91热爆视频 | 国产又粗又猛又爽又黄的视频先 | 91精品国产自产在线观看永久 | 亚洲综合涩 | 夜夜狠狠 | 日韩免费在线观看视频 | 99久久国产免费,99久久国产免费大片 | 日韩va欧美va亚洲va久久 | 久久av在线播放 | 婷婷日 | 在线观看日韩视频 | 91精品国产入口 | 十八岁以下禁止观看的1000个网站 | 亚洲精品久| 国产精品一区二区免费在线观看 | 欧美亚洲专区 | 日韩av手机在线看 | 免费在线观看亚洲视频 | 草久电影| 欧洲激情综合 | 国产va饥渴难耐女保洁员在线观看 | 国产九九九精品视频 | 欧美日韩不卡一区二区三区 | 国产成人精品久久久久 | 伊人久久婷婷 | 亚洲理论在线观看 | 免费视频 你懂的 | 国产一级片免费观看 | www.久久久.cum | 亚洲视频专区在线 | 婷婷在线不卡 | 精品欧美日韩 | 欧美网站黄色 | 国产粉嫩在线 | 免费观看一级特黄欧美大片 | 麻豆综合网 | 国产精品视频免费在线观看 | 麻豆久久| 99免费看片| www日韩欧美 | 国产精品成人aaaaa网站 | 中文字幕中文字幕在线中文字幕三区 | 国产a国产 | 免费视频三区 | 精品久久久精品 | 日韩免费专区 | 国产午夜av | 亚洲最新视频在线 | 国产福利91精品一区二区三区 | 久久这里精品视频 | 成人中文字幕+乱码+中文字幕 | 在线看v片| 夜夜躁狠狠燥 | 日日操日日 | 欧美日韩中字 | 视频国产在线 | 玖玖视频 | 免费一级片观看 | 色视频在线免费 | 自拍超碰在线 | 久久精品国产一区二区三区 | 亚洲a色 | 精品国产大片 | 人操人| 亚洲精品国偷自产在线99热 | 亚洲aⅴ在线观看 | 国产精品女同一区二区三区久久夜 | 久久激情五月激情 | 91精品久久久久久久91蜜桃 | 狠狠色狠狠色综合日日小说 | 国产精品精品久久久 | 国模精品在线 | 精品在线视频一区二区三区 | 国产高清在线免费视频 | 最新国产福利 | 日韩成人精品在线观看 | 激情综合啪 | 日韩一区二区三免费高清在线观看 | 婷婷在线观看视频 | 深夜男人影院 | 欧美日韩国产欧美 | 天天干天天草 | 久久久亚洲精品 | 中文字幕999 | 久草精品在线观看 | 天天干.com | 四虎国产视频 | 国产精品成人久久久久久久 | 中文字幕电影在线 | 91热在线 | 日本精品视频在线 | 久草男人天堂 | www.狠狠插.com | 国产女v资源在线观看 | 黄色av免费看| 国产伦理一区二区 | 欧美精品在线一区二区 | 欧美成人h版电影 | 天天爱天天草 | 日本三级香港三级人妇99 | 91女子私密保健养生少妇 | 狠狠狠干 | 色婷婷综合久久久久 | 国产精品久久一卡二卡 | 国产精品久久久久久久久费观看 | aav在线| 亚洲91中文字幕无线码三区 | 久久情侣偷拍 | av免费黄色 | 麻豆国产精品永久免费视频 | 精选久久| 在线国产视频观看 | 手机av在线免费观看 | 日韩网站在线看片你懂的 | 久久久黄视频 | 亚洲精品色| 中文字幕一区av | 91av99| 色综合久久中文综合久久牛 | 国产色就色 | 91亚·色| 伊人资源站 | av成人亚洲 | 国产一卡在线 | 91亚洲狠狠婷婷综合久久久 | 99热这里只有精品免费 | 韩国av不卡| 伊人色综合久久天天 | 三级a视频| 91视频免费视频 | 成人久久久精品国产乱码一区二区 | 欧美日韩在线观看一区 | 免费看日韩 | 字幕网资源站中文字幕 | 久久精品欧美日韩精品 | av丝袜在线 | 91亚洲视频在线观看 | 日韩亚洲在线观看 | 在线观看亚洲精品 | 激情视频在线高清看 | 中文高清av | 色婷婷免费 | 婷五月天激情 | 久久视频在线观看中文字幕 | 国内精品久久久久影院优 | av一本久道久久波多野结衣 | 好看av在线 | 在线视频欧美日韩 | 日韩在线免费视频 | 国外调教视频网站 | 国产高清福利在线 | 久久精品视频在线 | 国产黄色资源 | 91麻豆精品国产91久久久无需广告 | 亚洲天天草| 国产成人三级在线播放 | 成片视频在线观看 | 亚洲精品视频在线观看免费 | 久久人人看 | 99精品国产免费久久久久久下载 | 免费看一级片 | 婷婷丁香在线视频 | 国产91全国探花系列在线播放 | 久久精品成人欧美大片古装 | 美女免费视频网站 | 久久久精品国产免费观看同学 | 精品久久精品久久 | 国产免费中文字幕 | 国产精品亚州 | 久久99免费| 久久伊人热 | 日韩欧美区 | 亚洲专区中文字幕 | 欧美日韩一区二区久久 | 一区二区三区 中文字幕 | 国产福利91精品张津瑜 | 麻花传媒mv免费观看 | 婷婷精品国产一区二区三区日韩 | 人人干人人艹 | 丝袜足交在线 | 日韩精品一区二区在线观看视频 | 精品一区91 | 日韩欧美在线综合网 | 国产精品视频线看 | 欧美一级片在线播放 | 午夜18视频在线观看 | 不卡的av | 最近中文字幕高清字幕在线视频 | av高清免费| 成人av电影免费观看 | 97在线视频网站 | av成人动漫在线观看 | 久久理论视频 | 日韩在线免费播放 | 国产精品麻豆欧美日韩ww | www.日本色| av免费看看| 成人免费在线视频 | 美女视频一区二区 | 午夜免费在线观看 | 黄色一级大片在线免费看国产一 | 国产精品24小时在线观看 | 精品一区二区三区久久久 | 91精品视频播放 | 亚洲一区精品人人爽人人躁 | 91欧美国产 | 国产资源中文字幕 | 91亚洲精品国产 | 国产精品高清在线观看 | 91 在线视频播放 | 久久成人一区二区 | 亚洲成熟女人毛片在线 | 天天玩天天干天天操 | 色婷婷成人网 | 91大神精品视频在线观看 | 91亚洲国产成人久久精品网站 | 91成人久久 | 久久久久视 | 伊人网站 | www日 | 亚洲乱码国产乱码精品天美传媒 | 免费在线观看av网址 | 99视频国产在线 | 久久亚洲福利 | 久久国产欧美日韩精品 | 在线色吧 | 国产精品久久久久久久久久妇女 | 日韩av免费观看网站 | 一区二区三区三区在线 | 国产999视频 | 日韩网站在线观看 | 国产视频在线观看免费 | 国产色拍拍拍拍在线精品 | 婷婷六月色 | 成人h视频 | 日韩三级av | 在线观看日本韩国电影 | 国产成人精品一区二区三区在线 | 一级黄色片在线免费看 | 手机看片国产日韩 | 婷婷六月综合亚洲 | 久久天堂影院 | 国产小视频在线免费观看 | 国产视频在线观看一区二区 | 最近日韩中文字幕中文 | 日韩黄色一区 | 国产精品免费一区二区三区 | 久久国产精品一二三区 | 国产一级二级在线播放 | 毛片一区二区 | 91视频专区| 成人播放器| 午夜精品福利影院 | 日韩精品一区二区免费 | 天天操天天舔天天爽 | 91亚色视频 | 亚洲精品国产麻豆 | 成人av高清在线观看 | 高清视频一区二区三区 | 91热爆在线观看 | 日韩av电影网站在线观看 | 亚洲激情精品 | 亚洲 欧美日韩 国产 中文 | 99热日本| 人人爽人人插 | 一级黄色在线视频 | 久艹视频在线免费观看 | 国产免费视频一区二区裸体 | 九九99| 亚洲激情在线视频 | 四虎www com| 九色视频网址 | 亚洲欧洲一区二区在线观看 | 99高清视频有精品视频 | 国产视频欧美视频 | 99视频导航| 一区二区三区观看 | 久久国产精品99久久久久 | 国产一级二级三级在线观看 | 激情综合国产 | 日韩av图片 | 亚洲理论视频 | 在线观看完整版 | 色爽网站| 黄色国产区 | 欧美在线aaa | 在线免费观看羞羞视频 | 韩国av一区二区 | 久久黄色影院 | 日韩xxxx视频 | 中文字幕成人在线观看 | 亚洲精品国产自产拍在线观看 | h视频在线看 | 中文字幕国内精品 | 人人涩| 在线观看免费av网站 | 成年人视频免费在线播放 | 精品福利网 | 婷婷99 | 在线观看精品一区 | 九九九九免费视频 | 欧美一区免费观看 | 国产一区二区三区免费在线观看 | 91精品91| 日韩亚洲在线视频 | 在线观看视频三级 | 韩国一区二区三区视频 | 9999在线| 国产精品久久一区二区三区, | 日韩久久精品一区二区三区下载 | 欧美色精品天天在线观看视频 | 中文字幕一区二区三区在线播放 | 国产系列精品av | 日本在线观看中文字幕无线观看 | 国产一区二区在线免费观看 | 中文字幕麻豆 | 五月婷婷六月丁香激情 | 国产网红在线观看 | 国产精品成人aaaaa网站 | 人人澡人人添人人爽一区二区 | 欧美在线视频一区二区 | 国产成人在线免费观看 | 免费久久视频 | а中文在线天堂 | 婷婷色视频| 亚洲国产精品成人精品 | 一级成人免费视频 | 亚洲精品久久久久中文字幕m男 | 黄色91在线观看 | 久久久久成人精品免费播放动漫 | 日本女人的性生活视频 | 三级黄色理论片 | 欧美精品在线观看 | 中文字幕一区二区三区视频 | 911久久香蕉国产线看观看 | 成人少妇影院yyyy | 亚洲成av人片在线观看香蕉 | 国产无套一区二区三区久久 | 黄网站免费久久 | 日韩视频中文字幕在线观看 | 人人爽人人爱 | 成人影片在线免费观看 | 国产精品高清一区二区三区 | a在线免费观看视频 | 日本动漫做毛片一区二区 | 日韩免费在线看 | 成人精品视频久久久久 | 欧美福利精品 | 久久成人一区 | 亚洲资源一区 | 欧美在线日韩在线 | 久久久国产一区二区 | 久久精品综合网 | 久久国产精品久久精品 | 一区二区三区在线免费 | 天天人人 | 国产一级视频在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 日本精品在线看 | 国产精品九九久久99视频 | 9在线观看免费高清完整 | 免费黄色网址网站 | 成人福利在线播放 | 久久久99国产精品免费 | 国产午夜麻豆影院在线观看 | 婷婷久久国产 | 免费在线国产精品 | 最新成人在线 | 97av免费视频 | 四虎影视精品成人 | 国产精品一区二区三区久久 | 久产久精国产品 | 在线你懂的视频 | 国产精品久久久久久69 | 中文字幕久久亚洲 | 毛片网站在线观看 | 日韩欧美精品在线视频 | 国产成人精品一区二区三区福利 | 成人宗合网 | 欧美日韩精品影院 | 成年人免费av | 91完整版观看 | 久久久久欠精品国产毛片国产毛生 | 337p日本欧洲亚洲大胆裸体艺术 | 日韩欧美69 | 久久69精品 | 亚洲精品久久久久久久不卡四虎 | 国产精品视频久久 | 日韩大片在线看 | 偷拍福利视频一区二区三区 | 欧美综合在线观看 | 久久调教视频 | 久久久久久久国产精品视频 | 久久黄色美女 | 日韩精品久久一区二区三区 | 免费精品久久久 | 99国产在线视频 | 亚洲国产精品成人va在线观看 | 中文 一区二区 | 免费观看成人网 | 看片在线亚洲 | 免费能看的av | 天天天在线综合网 | www亚洲国产 | 成人黄色片免费 | 久久这里只有精品久久 | 日韩黄色一区 | 成人免费视频网 | 国产97色 | 午夜视频亚洲 | 69xx视频| 免费视频你懂得 | 麻豆影视网站 | 五月婷婷黄色网 | 国产精品一区二区无线 | 欧美性春潮 | 99夜色| 日韩av中文字幕在线免费观看 | 五月亚洲综合 | 国产综合片 | 中文字幕欧美日韩va免费视频 | 精品亚洲免费视频 | 麻豆 free xxxx movies hd| 成人午夜电影在线播放 | 国产福利免费看 | 久久精品高清 | 日韩午夜在线 | www.黄色片.com| 成全免费观看视频 | 亚洲精品国产成人 | 香蕉在线视频播放网站 | 欧美国产不卡 | 国产精品久久久久久久久软件 | 亚洲国产片 | 天天干夜夜操视频 | 久久精品视频2 | 成人久久毛片 | 激情av五月婷婷 | 欧美激情xxxx | 亚洲国产午夜精品 | 日韩精品中文字幕一区二区 | 黄色91在线| 日韩欧美亚州 | 高清视频一区二区三区 | 深夜成人av | 四川bbb搡bbb爽爽视频 | 国产96精品 | 伊人婷婷久久 | 久久久香蕉视频 | 日韩在观看线 | 国产91精品久久久久久 | www色综合| 日韩精品亚洲专区在线观看 | 久久久久久蜜av免费网站 | 久草精品电影 | 国产精品手机在线 | 最近中文字幕国语免费av | 精品日本视频 | 草免费视频| 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 国产亚洲在线视频 | 国产一级精品绿帽视频 | 久久久综合精品 | 中文字幕色综合网 | 91精品中文字幕 | 999国产在线 | 国产成人精品a | 欧美a√大片| 成年人在线视频观看 | 啪啪动态视频 | av中文字幕网站 | 日本高清久久久 | 亚洲精品乱码久久久久久蜜桃91 | 处女av在线| 91久久久久久久 | 99精品视频免费看 | 少妇搡bbb | 日本视频网 | 国产一区二三区好的 | 久久久久国产精品一区二区 | 四虎在线影视 | 四虎成人精品 | 亚洲在线精品视频 | 精品在线二区 | 久久久久免费 | 亚洲精品在线一区二区 | 国产精品嫩草影院123 | 深夜福利视频一区二区 | 成人免费在线电影 | 人人射人人澡 | 美女久久一区 | 国产精品久久久网站 | 久草资源在线观看 | av中文字幕不卡 | 五月天色综合 | 精品国产一区二区三区久久 | 亚洲国产中文字幕在线视频综合 | 免费97视频 | 国产欧美久久久精品影院 | 久久综合久色欧美综合狠狠 | 国产精品麻豆视频 | 最新日韩视频 | 色综合网在线 | 国产精品高| 激情欧美丁香 | 国产成人精品午夜在线播放 | 国产一区视频在线观看免费 | 欧美日视频 | 亚洲精品在线免费观看视频 | 欧美视频在线二区 | 韩日色视频 | 亚洲深夜影院 | 亚洲国产精品电影在线观看 | 黄色网www| 免费h在线观看 | 91精品人成在线观看 | 久久爽久久爽久久av东京爽 | 色综合天天综合在线视频 | 欧美色精品天天在线观看视频 | 国产伦理一区二区 | 51精品国自产在线 | 一区二区欧美激情 | 丁香激情综合久久伊人久久 | 国产精品丝袜久久久久久久不卡 | 中文字幕中文中文字幕 | 欧美韩国在线 | 日韩精品网址 | 一级黄色在线视频 | 国产一区在线视频播放 | 国产成人av电影在线 |