久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA输入/输出流详细讲解

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA输入/输出流详细讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

應用程序經常需要訪問文件和目錄,讀取文件信息或寫入信息到文件,即從外界輸入數據或者向外界傳輸數據,這些數據可以保存在磁盤文件、內存或其他程序中。在Java中,對這些數據的操作是通過I/O技術來實現的。所謂I/O技術,就是數據的輸入(Input)、輸出(Output)技術。本章將對Java的?I/O系統進行講解,包括I/O的體系結構、流的概念、字節流、處理字節流的基本類InputStream和OutputStream、字符流、處理字符流的基本類Reader和Writer、文件管理、序列化和反序列化等。

12.1 I/O流概述

Java將數據的輸入/輸出操作當作“流”來處理,“流”是一組從源頭到目的地的有序的字節序列。在Java程序中,從某個數據源讀取數據到程序的流稱為輸入流,通過程序使用數據流將數據寫入到目的地的稱為輸出流。輸入流和輸出的讀取和寫入流程如圖12.1所示。

?

(a)輸入流 (b)輸出流

圖12.1 輸入/輸出流示意圖

當程序需要從某個數據源讀入數據的時候,就會開啟一個輸入流,數據源可以是文件、內存或網絡等。相反,需要寫出數據到某個數據源目的地的時候,也會開啟一個輸出流,這個數據源目的地也能夠是文件、內存或網絡等。I/O流有很多種,按操作數據單位不同可分為字節流和字符流,按數據流的方向不同分為輸入流和輸出流,如表12.1所示。

表12.1 流的分類

輸入/輸出

字節流

字符流

輸入流

InputStream

Reader

輸出流

OutputStream

Writer

????輸入流和輸出流的區別是以程序為中心來進行判斷,從外部設備讀取數據到程序是輸入流,從程序寫入數據到外部設備是輸出流。字節流的單位是一個字節,即8bit;字符流的單位是兩個字節,即16bit。表12.1是I/O流的簡單分類,實際開發中需要使用的的I/O流共涉及40多個類,都是從這4個抽象基類派生的。接下來,我們先學習輸入/輸出流的體系結構。

Java.io包中的最重要的部分是由5個類和一個接口組成。5個類是指File、RandomAccessFile、InputStream、OutputStream、Writer、Reader,一個接口指的是Serializable。掌握了這些I/O的核心操作,那么對于Java中的I/O體系也就有了一個初步的認識了。總體上看,Java I/O主要包括如下3個部分:

??流式部分:I/O的主體部分。

??非流式部分:主要包含一些輔助流式部分的類,如File類、RandomAccessFile類和FileDescriptor類等。

??其他類:主要是文件讀取部分的與安全相關的類(如SerializablePermission類),以及與本地操作系統相關的文件系統的類,如(FileSystem類、Win32FileSystem類和WinNTFileSystem類)。

這里,將Java I/O中主要的類簡單介紹如下:

??File類(文件特征與管理類):用于文件或者目錄的描述信息等(An abstract representation of file and directory pathnames),如生成新目錄、修改文件名、刪除文件、判斷文件所在路徑等。

??InputStream類(二進制格式操作類):基于字節輸入操作的抽象類,是所有輸入流的父類,定義了所有輸入流都具有的共同特征。

??OutputStream類(二進制格式操作類):基于字節輸出操作的抽象類,是所有輸出流的父類,定義了所有輸出流都具有的共同特征。

??Reader類(文件格式操作類):抽象類,基于字符的輸入操作。

??Writer類(文件格式操作類):抽象類,基于字符的輸出操作。

??RandomAccessFile類(隨機文件操作類):它的功能豐富,可以從文件的任意位置進行存取(輸入輸出)操作。

綜上所述,Java中I/O流的體系結構如圖12.2所示。

圖12.2 I/O流體系結構圖

12.2 File類

File類可以用于處理文件目錄。在對一個文件進行輸入/輸出,必須先獲取有關該文件的基本信息,如文件是否可以讀取、能否被寫入、路徑是什么等。java.io.File類不屬于Java流系統,但它是文件流進行文件操作的輔助類,提供了獲取文件基本信息以及操作文件的一些方法,通過調用File類提供的相應方法,能夠完成創建文件、刪除文件以及對目錄的一些操作。

12.2.1?File類的常用方法

File類的對象是一個“文件或目錄”的抽象,它并不打開文件或目錄,而是指定要操作的文件或目錄。File類的對象一旦創建,就不能再修改。要創建一個新的File對象,需要使用它的構造方法,如表12.2所示。

表12.2 File類構造方法

構造方法

功能描述

public File(String filename)

創建File對象,filename表示文件或目錄的路徑

public File(String parent,String child)

創建File對象,parent表示上級目錄,child表示指定的子目錄或文件名

public File(File obj,String child)

設置File對象,obj表示File對象,child表示指定的子目錄或文件名

使用表12.2所列的哪種構造方法要由其他被訪問的文件來決定。例如,當在應用程序中只用到一個文件時,使用第1種構造方法最合適;如果使用了一個公共目錄下的幾個文件,那么使用第2種或第3種構造方法會更方便。

創建File類的對象后,就可以使用File的相關方法來獲取文件信息。接下來,先了解一下File類的常用方法,如表12.3所示。

表12.3?File類常用方法

常用方法

功能描述

備注

String getName()

獲取相關文件名

與文件名相關的方法

String getPath()

獲取文件路徑

String getAbsolutePath()

獲取文件絕對路徑

String getParent()

獲取文件上級目錄名稱

boolean renameTo(File newName)

更改文件名,成功則返回true,否則返回false

boolean exists()

檢測文件對象是否存在

文件測定相關方法

boolean canWrite()

檢測文件對象是否可寫

boolean canRead()

檢測文件對象是否可讀

boolean isFile()

檢測文件對象是否是文件

boolean isDirectory()

檢測文件對象是否是目錄

boolean isAbsolute()

檢測文件對象是否是絕對路徑

long lastModified()

返回此File對象表示的文件或目錄最后一次被修改的時間

常用文件信息和方法

long length()

返回此File對象表示的文件或目錄的長度

boolean delete()

刪除文件或目錄。如果File對象為目錄,則該目錄為空,方可刪除。刪除成功,返回true,否則返回false

boolean mkdir()

創建File對象指定目錄。如果創建成功,則返回true,否則返回false

目錄相關類工具

boolean mkdirs()

創建File對象指定的目錄,如果此目錄的父級不存在,則還會創建父目錄。如創建成功,則返回true,否則返回false

String []list()

返回此File對象表示的目錄中的文件和目錄的名稱所組成字符串數組

????接下來,通過一個案例來演示File類常用方法的基本使用,先在當前目錄創建一個1201.txt文件,在里面輸入“AAA軟件教育歡迎您!”,然后編寫代碼,如例12-1所示。

12-1?Demo1201.java

1?package com.aaa.p120201;

2?import java.io.*;

3?import java.util.*;

4?import java.text.SimpleDateFormat;

5

6?public class Demo1201 {

7?????public static void main(String[] args) {

8?File file = new File("src/1201.txt");

9?System.out.println("文件是否存在-->" + file.exists());

10?System.out.println("文件是否可寫-->" + file.canWrite());

11?System.out.println("文件是否可讀-->" + file.canRead());

12?System.out.println("文件是否是文件-->" + file.isFile());

13?System.out.println("文件是否是目錄-->" + file.isDirectory());

14?System.out.println("文件是否是絕對路徑-->" + file.isAbsolute());

15?System.out.println("文件名是-->" + file.getName());

16?System.out.println("文件的路徑是-->" + file.getPath());

17?System.out.println("文件的絕對路徑是-->" + file.getAbsolutePath());

18?System.out.println("文件的上級路徑是-->" + file.getParent());

19?SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

20?System.out.print("最后修改時間-->");

21?System.out.println(sdf.format(new Date(file.lastModified())));

22?System.out.println("文件長度是-->" + file.length());

23?????}

24?}

程序的運行結果如下:

文件是否存在-->true

文件是否可寫-->true

文件是否可讀-->true

文件是否是文件-->true

文件是否是目錄-->false

文件是否是絕對路徑-->false

文件名是-->1201.txt

文件的路徑是-->src\1201.txt

文件的絕對路徑是-->D:\work\AAA課程研發\教材編寫\javaIO\src\1201.txt

文件的上級路徑是-->src

最后修改時間-->2021-06-15

文件長度是-->25

例12-1在程序中構造了File類的對象,運用File類的各個方法得到文件的各種相關屬性。在第19~21行代碼中,通過格式化時間信息,獲取文件最后修改時間,最后打印文件1201.txt相關屬性的信息。

12.2.2?遍歷目錄下的文件

File類用來操作文件和獲得文件的信息,但是不提供對文件讀取的方法,這些方法由文件流提供。File類中提供了list()方法和listFiles()方法,用來遍歷目錄下所有文件。兩者不同之處是list()方法只返回文件名,沒有路徑信息;而listFiles()方法不但返回文件名稱,還包含有路徑信息。

接下來,通過案例來演示list()方法與listFiles()方法的使用,如例12-2所示。

12-2?Demo1202.java

1?package com.aaa.p120202;

2?import java.io.*;

3

1?public class Demo1202 {

2?public static void main(String[] args) {

3?System.out.printf("***********list()方法***********");

4?File file = new File("D:\\javaCode");?????????//?創建File對象

5?if (file.isDirectory()) {?????????//?判斷file目錄是否存在

6?String[] list = file.list();

7?for (String fileName : list) {

8?System.out.println(fileName);?????????//?打印文件名

9?}

10?}

11?System.out.printf("***********listFiles()方法***********");

12?files(file);

13?}

14?public static void files(File file) {

15?File[] listFile = file.listFiles();?????????//?遍歷目錄下所有文件

16?for (File f : listFile) {

17?if (f.isDirectory()) {?????????//?判斷是否是目錄

18?files(f);?????????????//?遞歸調用

19?}

20?System.out.println(f.getAbsolutePath());

21?}

22?}

23?}

程序的運行結果如下:

***********list()方法***********

chapter02

test.txt

***********listFiles()方法***********

D:\javaCode\chapter02\.idea\.gitignore

D:\javaCode\chapter02\.idea\misc.xml

D:\javaCode\chapter02\.idea\modules.xml

D:\javaCode\chapter02\.idea\uiDesigner.xml

D:\javaCode\chapter02\.idea\workspace.xml

D:\javaCode\chapter02\.idea

D:\javaCode\chapter02\chapter02.iml

D:\javaCode\chapter02\out\production\chapter02\Demo02.class

D:\javaCode\chapter02\out\production\chapter02\Demo0201.class

例12-2中,首先創建File對象,指定File對象的目錄。第5~10行代碼先判斷file目錄是否存在,若存在,則調用list()方法,第6行代碼以String數組的形式得到所有文件名,最后循環遍歷數組內容并打印。如果目錄下仍然有子目錄則不能遍歷到,此時就需要用到File類的listFiles()方法,遍歷目錄下所有文件之后,循環判斷遍歷到的是否是目錄,如果是目錄,則再次遞歸調用file(file)方法本身。第14~22行代碼是自定義的靜態方法,直到遍歷完到文件。通過程序運行結果可以看到,listFiles()方法輸出的信息比list()方法輸出的信息更加詳細,而且listFiles()方法返回值是File類型,可以直接使用該文件。

注意:在Windows系統中,目錄的分隔符是反斜杠(\)。但是,在Java語言中,使用反斜杠表示轉義字符,所以如果需要在Windows系統的路徑下包括反斜杠,則應該使用兩條反斜線,如D:\\javaCode或者直接用斜線(/)也可以。

12.2.3?刪除文件及目錄

在程序設計中,除了遍歷文件,文件的刪除操作也很常見,Java中通過使用File類的delete()方法來對文件進行刪除操作。

接下來,演示如何刪除文件及目錄,如例12-3所示。

12-3?Demo1203.java

1?package com.aaa.p120203;

2?import java.io.*;

3

4?public class Demo1203 {

5?public static void main(String[] args) {

6?String path = "D:/javaCode/chapter02/out";

7?deleteD(path);

8?}

9?private static void deleteD(String pp) {

10?File file = new File(pp);

11?if (file.isFile()) {

12?while (file.exists()) {

13?System.out.println("刪除了文件:" + file.getName());

14?file.delete();

15?}

16?} else {

17?File[] listFiles = file.listFiles();

18?for (File file2 : listFiles) {

19?try {

20?deleteD(file2.getAbsolutePath());

21?} catch (Exception e) {

22?System.out.println(e.getMessage());

23?}

24?}

25?file.delete();

26?}

27?}

28?}

程序的運行結果如下:

刪除了文件:Demo02.class

刪除了文件:Demo0201.class

刪除了文件:Demo0202.class

刪除了文件:Demo03.class

刪除了文件:Demo05.class

刪除了文件:Demo06.class

例12-3中,在main()方法中deleteD(File file)方法中將待刪除的內容以字符串形式傳入,調用方法時創建File對象,然后遍歷該目錄下所有文件,判斷遍歷到的是否是目錄,如果是目錄,繼續遞歸調用方法本身,如果是文件則輸出文件信息然后直接刪除,刪除文件完成后,將目錄刪除。第18~23行代碼增加了確保程序健壯性的異常信息處理。

注意:File類的delete()方法只是刪除一個指定的文件,如果目錄下還有子目錄,是無法直接刪除的,需要遞歸刪除。另外,在Java中是直接從虛擬機中將文件或目錄刪除,可以不經過回收站,文件無法恢復,所以使用delete()操作時要謹慎。

12.2.4?RandomAccessFile類

Java提供的RandomAccessFile類,允許從文件的任何位置進行數據的讀寫。它不屬于流,是Object類的子類,但它融合了InputStream類和OutStream類的功能,既能提供read()方法和write()方法,還能提供更高級的直接讀寫各種基本數據類型數據的讀寫方法,如readInt()方法和writeInt()方法等。

RandomAccessFile類的中文含義為隨機訪問文件類,隨機意味著不確定性,指的是不需要從頭讀到尾,可以從文件的任意位置開始訪問文件。使用RandomAccessFile類,程序可以直接跳到文件的任意地方讀、寫文件,既支持只訪問文件的部分數據,又支持向已存在的文件追加數據。

為支持任意讀寫,RandomAccessFile類將文件內容存儲在一個大型的byte數組中。RandomAccessFile類設置指向該隱含的byte數組的索引,稱為文件指針,通過從文件開頭就開始計算的偏移量來標明當前讀寫的位置。

????RandomAccessFile類有兩個構造方法,其實這兩個構造方法基本相同,只是指定文件的形式不同而已,一個使用String參數來指定文件名,一個使用File參數來指定文件本身。具體示例如下:

//?訪問file參數指定的文件,訪問的形式由mode參數指定

public RandomAccessFile(File file, String mode)

//?訪問name參數指定的文件,訪問的形式由mode參數指定

public RandomAccessFile(String name, String mode)

????在創建RandomAccessFile對象時還要設置該對象的訪問形式,具體使用一個參數mode進行指定,mode的值及對應的訪問形式如表12.4所示。

表12.4 mode的值及含義

mode

含義

“r”

以只讀的方式打開,如果試圖對該RandomAccessFile執行寫入方法,都將拋出IOException異常

“rw”

以讀、寫方式打開指定文件,如果該文件不存在,則嘗試創建該文件

“rws”

以讀、寫方式打開指定文件,相較于“rw”模式,還需要對文件的內容或元數據的每個更新都同步寫入到底層存儲設備

“rwd”

以讀、寫方式打開指定文件,相較于“rw”模式,還要求對文件內容的每個更新都同步寫入到底層存儲設備

????隨機訪問文件是由字節序列組成,一個稱為文件指針的特殊標記定位這些字節中的某個字節的位置,文件的讀寫操作就是在文件指針所在的位置上進行的。打開文件時,文件指針置于文件的起始位置,在文件中進行讀寫數據后,文件指針就會移動到下一個數據項。如表12.5所示,列出了RandomAccessFile類所擁有的用來操作文件指針的方法。

表12.5 RandomAccessFile類操作指針的方法

方法聲明

功能描述

long getFilePointer()

獲取當前讀寫指針所處的位置

void seek(long pos)

指定從文件起始位置開始的指針偏移量,即設置讀指針的位置

int skipBytes(int n)

使讀寫指針從當前位置開始,跳過n個字節

void setLength(long num)

設置文件長度

????接下來,通過案例演示?RandomAccessFile類操作文件指針的方法的使用,如例12-4所示。

12-4?Demo1204.java

1?package com.aaa.p1202;

2?import java.io.*;

3?import java.io.IOException;

4?import java.io.RandomAccessFile;

5

6?public class Demo1204 {

7?public static void main(String[] args) {

8?File file = new File("d:/javaCode/test.txt");

9?RandomAccessFile raf = null;?????????//?聲明RandomAccessFile對象

10

11?try{

12?raf = new RandomAccessFile(file,"rw");

13?for(int n = 0;n < 10;n++){

14?raf.writeInt(n);

15?}

16?System.out.println("當前指針位置:" + raf.getFilePointer());

17?System.out.println("文件長度:" + raf.length() + "字節");

18?raf.seek(0);?????????????????????????????//?返回數據的起始位置

19

20?System.out.println("當前指針位置:" + raf.getFilePointer());

21?System.out.println("讀取數據");

22?for(int n = 0;n < 6;n++){

23?System.out.println("數值:" + raf.readInt() + "-->" +

24?(raf.getFilePointer() - 4));

25?if(n == 3)raf.seek(32);?????????????????//?指針跳過?4 5 6 7

26?}

27?raf.close();?????????????????//?關閉隨機訪問文件流

28?}catch (IOException e){

29?e.printStackTrace();

30?}

31?}

32?}

程序的運行結果如下:

第0個值:0

當前指針位置:40

文件長度:40字節

當前指針位置:0

讀取數據

數值:0-->0

數值:1-->4

數值:2-->8

數值:3-->12

數值:8-->32

數值:9-->36

例12-4中,先向test.txt文件寫入0~9十個數字,此時文件的長度為10個int字節,數據指針位置為40。如果要讀取文件的數據信息,則需要把文件指針移動到文件的起始位置,而執行seek(0)可以達到目的。雖然開始時會循環讀取數據,但在i為3時,將指針移動到32,即跳過5、6、7、8,直接開始讀取8和9,對應指針位置時32和36。

12.3?字節流

在前面小節中,我們學習了File類對文件或目錄進行操作的方法,但是File類不包含向文件讀寫數據的方法。為了進一步進行文件輸入/輸出操作,需要使用正確的Java I/O類來創建對象。在程序設計中,程序如果要讀取或寫入8位bit的字節數據,應該使用字節流來處理。字節流一般用于讀取或寫入二進制數據,如圖片、音頻文件等。一般而言,只要是“非文本數據”就應該使用字節流來處理。

12.3.1?字節流概述

在計算機中,無論是文本、圖片、音頻還是視頻,所有的文件都能以二進制(bit,1字節為8bit)形式傳輸或保存。Java中針對字節輸入/輸出操作提供了一系列流,統稱為字節流。程序需要數據的時候要使用輸入流來讀取數據,而當程序需要將一些數據保存起來的時候就需要使用輸出流來完成。在Java中,字節流提供了兩個抽象基類InputStream和OutputStream,分別用于處理字節流的輸入和輸出。因為抽象類不能被實例化,所以在實際使用中,使用的是這兩個類的子類。這里還需要強調的是,輸入流和輸出流的概念是有一個參照物的,參照物就是站在程序的角度來理解這兩個概念,如圖12.3所示。

圖12.3中,從文件到程序是輸入流(InputStream),通過程序,讀取文件中的數據;從程序到文件是輸出流(OutputStream),將數據從程序輸出到文件。????

????InputStream類和OutputStream類都是抽象類,不能被實例化,所以如果要實現不同數據源的操作功能,須要用到它們的子類,這些子類可以在JDK的API文檔里的類層次結構中查看,如圖12.4和圖12.5所示。

?

圖12.4 InputStream子類結構圖 圖12.5 OutputStream子類結構圖

從圖12.4和圖12.5中可看出,InputStream和OutputStream的子類雖然較多,但都有規律可循。因為輸入流或輸出流的數據源或目標的數據格式不同,如字節數組、文件、管道等,所以子類在命名的時候采用的格式是數據類型加抽象基類名。例如,FileInputStream的子類表示從文件中讀取信息,InputStream為后綴。此外,InputStream和OutputStream的子類大多都是成對出現的,如數據過濾流FilterInputStream和FilterOutputStream。

InputStream類定義了輸入流的一般方法,是字節輸入流的父類,其他字節輸入流都是在其基礎上做功能上的增強。因此,了解了InputStream類就為了解其他輸入流打下了基礎,表12.6列出了InputStream類的常用方法。

表12.6 InputStream類的常用方法

方法聲明

功能描述

public int available()

獲取輸入流中可以不受阻塞地讀取的字節數

public void close()

關閉輸入流并釋放與該流關聯的所有系統資源,該方法由子類重寫

public void mark(int readlimit)

在此輸入流中標記當前的位置,該方法由子類重寫

public boolean markSupported()

判斷當前輸入流是否允許標記。若允許,則返回true,否則返回false

public long skip(long n)

從輸入流中跳過指定n個指定的字節,并返回跳過的字節數

public int read()

從輸入流中讀取數據的下一個字節

public int read(byte[] b)

從輸入流中讀取一定數量的字節,并將其存儲在緩沖區數組 b 中,返回讀取的字節數。如果已經到達末尾,則返回-1

public int read(byte[] b, int off, int len)

將輸入流中最多 len 個數據字節讀入 byte 數組。然后將讀取的b數據以int返回。如果已經到達末尾,則返回-1

public void reset()

將輸入流重新定位到最后一次對此輸入流設置標記的起始處

????表12.6中列出了InputStream類的方法,上述所有方法都聲明拋出IOException異常,因此使用時要注意處理異常。InputStream使用最多的方法為read()和close()方法,前者從已存在的文件中讀取字節,在工作做完之后,由后者關閉字節流,釋放系統資源,如果不關閉會浪費一定量的系統資源,會導致計算機運行效率下降。read()方法有構成函數重載的3種形式,無參的read()方法可以用來將字節挨個讀入,另外兩個可以指定一個字節數組作為讀取字節的批量,甚至可以通過定義off和len,指定讀取字節的起始位置和長度。

下面我們來看一看OutputStream類,它擁有和InputStream類似的用法和相對的功能方法。

表12.7 OutputStream類的常用方法

方法聲明

功能描述

void close()

關閉此輸出流,并釋放與之有關的所有系統資源,由子類重寫該方法

void flush()

刷新此輸出流,并強制寫出所有緩沖的輸出字節

void write(byte[] b)

將 數組b的數據寫到輸出流

void write(int b)

將指定的int字節b寫入此輸出流

void write(byte[] b, int off, int len)

將指定 byte 數組b中寫入到輸出流,從偏移量 off 開始的 len 個字節寫入此輸出流

????表12.7所列的OutputStream類的常用方法可分為兩類:3個重載write()方法能夠向文件中寫入數據,可以選擇挨個或以數組的方式;flush()方法和close()方法能夠操作輸出流本身,close()方法關閉此流并釋放系統資源,flush()方法會強制將緩沖區中的字節寫入文件中,即使緩沖區還沒有裝滿,該方法可在流關閉前調用,用于清空緩沖區。

12.3.2?讀寫文件

FileInputStream類和FileOutputStream類用于從文件/向文件讀取/寫入字節數據,FileInputStream是InputStream的子類,用來從文件中讀取數據,操作文件的字節輸入流;FileOutputStream是OutputStream的子類,可以指定文件名創建實例,一旦創建文檔就開啟,接著就可以用來寫入數據。二者在使用時,都不需要用close()關閉文檔。

????接下來,通過實例來演示讀取本地文件的流程。為了方便,我們先在當前目錄下新建一個名為“read.txt”的文件,并向其中寫入“AAA軟件教育”,接著編寫程序將文件中的內容讀出并打印到控制臺,如例12-5所示。

12-5?Demo1205.java

1?package com.aaa.p120302;

2?import java.io.*;

3

4?public class Demo1205 {

5?public static void main(String[] args) {

6?FileInputStream fileInput = null;

7?try {

8?fileInput = new FileInputStream("read.txt");?????????//?創建文件輸入流對象

9?int n = 1024;??????????????????????????????????//?設定讀取的字節數

10?byte buffer[] = new byte[n];

11?//?讀取輸入流

12?while ((fileInput.read(buffer, 0, n) != -1) && (n > 0)) {

13?System.out.print(new String(buffer));

14?}

15?} catch (Exception e) {

16?System.out.println(e);

17?} finally {

18?if (fileInput != null){

19??????????try {

20?????????????fileInput.close();?????????????????????????//?釋放資源

21?????????????} catch (IOException e) {

22?????????????e.printStackTrace();

23?????????????}

24?}

25?}

26?}

27?}

程序的運行結果如下:

AAA軟件教育

在例12-5中,我們建立了一個長度為1024的byte數組,將其傳入read()方法中,并設置始末位置為0到n,此時read()方法一次讀1024個字節。運行之后,我們看到控制臺打印出“AAA軟件教育”。

注意:在例12-5中,如果程序中途出現錯誤,程序將直接中斷,所以一定要將關閉資源的close()方法寫到finally中。另外,由于finally中不能直接訪問try中的內容,所以要將FileInputStream定義在try的外面。由于篇幅有限,后面的代碼不再重復異常處理的標準寫法,直接將異常拋出。

需要注意的是,當創建文件輸入流時,一定要保證目錄下有對應文件存在,否則會報FileNotFoundException異常,提示“java.io.FileNotFoundException: read.txt (系統找不到指定的文件)”。

明白了FileInputStream的用法,下面我們來看看與之相對的FileOutputStream,它使用字節流向一個文件中寫入內容,兩者用法相似,如例12-6所示。

12-6?Demo1206.java

1?package com.aaa.p120302;

2?import java.io.*;

3

4?public class Demo1206 {

5?public static void main(String[] args) throws Exception {

6?System.out.print("請輸入要保存到文件的內容:");

7?int count, n = 1024;

8?byte buffer[] = new byte[n];

9?count = System.in.read(buffer);?????????????????//?讀取標準輸入流

10?//?創建文件輸出流對象

11?FileOutputStream fileOutput = new FileOutputStream("read.txt");

12?fileOutput.write(buffer, 0, count);?????????//?寫入輸出流

13?System.out.println("已保存到read.txt!");

14?fileOutput.close();?????????????//?釋放資源

15?}

16?}

程序的運行結果如下:

請輸入要保存到文件的內容:AAA軟件歡迎你

已保存到read.txt!

例12-6程序的運行結果顯示已保存到read.txt,此時文件內容如下:

AAA軟件歡迎你

????與輸入流不同的是,當文件不存在時,輸出流會先創建文件再向其中寫入內容。當文件已經存在時,會先將原本的內容清空,再向其中寫入。例12-6中執行之后,原本的內容被替換成了新的內容。如果想要保留原來內容,只需要在原來的基礎上構造輸出流時追加一個Boolean類型的參數,該參數用于指定是否為追加寫入,如果為true,就能夠在源文件尾部的下一行寫入內容了,如例12-7所示。

12-7?Demo1207.java

1?package com.aaa.p120302;

2?import java.io.*;

3

4?public class Demo1207 {

5?public static void main(String[] args) throws Exception {

6?System.out.print("請輸入要保存到文件的內容:");

7?int count, n = 1024;

8?byte buffer[] = new byte[n];

9?count = System.in.read(buffer);?????????????????//?讀取標準輸入流

10?//?創建文件輸出流對象

11?FileOutputStream fileOutput = new FileOutputStream("read.txt", true);

12?fileOutput.write(buffer, 0, count);?????????//?寫入輸出流

13?System.out.println("已保存到read.txt!");

14?fileOutput.close();?????????????//?釋放資源

15?}

16?}

程序的運行結果如下所示:

請輸入要保存到文件的內容:專業的軟件培訓機構

已保存到read.txt!

運行結果顯示已保存到read.txt,由于我們是自行創建了read.txt?文件,并在例12-6中重寫,而本次運行的結果是將對應內容追加到read.txt中,此時文件內容如下:

AAA軟件歡迎你

專業的軟件培訓機構

????通過例12-7可以看出,構造FileOutputStream時聲明append參數為true,即可在原文件基礎上寫入新內容。

12.3.3?文件拷貝

前面我們分別講解了文件輸入流和文件輸出流的使用,現在我們將二者結合起來,就能夠完成更復雜的操作,這也是我們在日常開發中可能使用到的。

輸入流和文件輸結合使用可以實現文件的復制,首先我們來做一些準備工作。在當前目錄下建立兩個文件夾,分別命名為image、target,之后向image目錄下存放一張圖片,并命名為img.png。然后,開始編寫代碼,如例12-8所示。

12-8?Demo1208.java

1?package com.aaa.p1203;

2?import java.io.*;

3

4?public class Demo1208 {

5?public static void main(String[] args) throws Exception {

6?//?創建文件輸入流對象

7?FileInputStream input = new FileInputStream("image\\img.png");

8?//?創建文件輸出流對象

9?FileOutputStream output = new FileOutputStream("target\\img.png");

10?int len;????????????????????????????????????????//?定義len,記錄每次讀取的字節

11?long begin = System.currentTimeMillis();????//?拷貝文件前的系統時間

12?while ((len = input.read()) != -1) {?????????//?讀取文件并判斷是否到達文件末尾

13?output.write(len);?????????????????//?將讀到的字節寫入文件

14?}

15?long end = System.currentTimeMillis();?????????//?拷貝文件后的系統時間

16?System.out.println("拷貝文件耗時:" + (end - begin) + "毫秒");

17?output.close();?????????????????//?釋放資源

18?input.close();

19?}

20?}

程序的運行結果如下所示:

拷貝文件耗時:875毫秒

控制臺中打印出了程序拷貝文件所消耗的時間,而圖片就在這段時間內由字節流的方式實現了拷貝,如圖12.6所示。

?

圖12.6 InputStream子類結構圖 圖12.7 OutputStream子類結構圖

由于不同計算機性能不同,或同一個計算機在不同情況下負載不同,拷貝圖片所消耗的時間都有可能會有差別,具體時間以現實情況為準。

注意:在例12-8中,指定image和target的目錄用“\\”,這是因為windows系統目錄用反斜杠“\”表示,但Java中反斜杠是特殊字符,所以寫成“\\”指定路徑,也可以使用“/”指定目錄,如“image/img.png”。

12.3.4?字節流的緩沖區

前文講解了字節流拷貝文件,還有一種更高效的拷貝方式,那就是在使用中加上緩沖區,緩沖區可以幫助提升字節傳輸效率。因為,不加緩沖區的時候是一個字節一個字節地傳輸,而加了緩沖區后則是先將字節填滿一個緩沖區,再將整個緩沖區的字節一并傳輸,這樣可以顯著降低傳輸次數,提升傳輸效率。每次傳輸都會消耗一定的時間,但是使用緩沖區會在本地占用一定的空間,這屬于空間換時間的方式,

接下來,通過案例來演示緩沖區在字節流拷貝中的用法,如例12-9所示。

12-9?Demo1209.java

1?package com.aaa.p120304;

2?import java.io.*;

3

4?public class Demo1209 {

5?public static void main(String[] args) throws Exception {

6?//?創建文件輸入流對象

7?FileInputStream input = new FileInputStream("image\\img.png");

8?//?創建文件輸出流對象

9?FileOutputStream output = new FileOutputStream("target\\img.png");

10?byte[] b = new byte[1024];?????????????//?定義緩沖區大小

11?int len;?????????????????//?定義len,記錄每次讀取的字節

12?long begin = System.currentTimeMillis();//?拷貝文件前的系統時間

13?while ((len = input.read(b)) != -1) {????//?讀取文件并判斷是否到達文件末尾

14?output.write(b, 0, len);?????????????//?從第1個字節開始,向文件寫入len個字節

15?}

16?long end = System.currentTimeMillis();????//?拷貝文件后的系統時間

17?System.out.println("拷貝文件耗時:" + (end - begin) + "毫秒");

18?output.close();?????????????//?釋放資源

19?input.close();

20?}

21?}

程序的運行結果如下:

拷貝文件耗時:38毫秒

從例12-9的運行結果可以看出,與例12-8相比,拷貝所耗的時間大大地降低了,說明使用緩沖區有效減少了字節流的傳輸次數,從而提升了程序的運行效率。

除了上面這種方式,還有一種封裝性更好,更易用的方式來使用帶緩沖區的I/O流,那就是BufferedInputStream和BufferedOutputStream,它們的構造器接收對應的I/O流,并返回帶緩沖的BufferedInputStream對象和BufferedOutputStream對象,這體現出了裝飾設計模式的思想,其接收的參數為裝飾對象,返回的類為裝飾結果,結構如圖12.8所示。

從圖12.8可以看出,在程序和文件之間的核心由節點流傳輸數據,如我們在之前所講到的FileInputStream和FileOutputStream。在外層為節點流的封裝,如我們現在講的BufferedInputStream和BufferedOutputStream。

接下來,我們通過案例來演示緩沖流的使用,如例12-10所示。

12-10?Demo1210.java

1?package com.aaa.p120304;

2?import java.io.*;

3

4?public class Demo1210 {

5?public static void main(String[] args) throws Exception {

6?//?創建文件輸入流對象

7?FileInputStream fInput = new FileInputStream("image\\img.png");

8?//?創建文件輸出流對象

9?FileOutputStream fOutput = new FileOutputStream("target\\img.png");

10?//?將創建的節點流的對象作為形參傳遞給緩沖流的構造方法中

11?BufferedInputStream bInput = new BufferedInputStream(fInput);

12?BufferedOutputStream bOutput = new BufferedOutputStream(fOutput);

13?int len;????????????????????????????????????//?定義len,記錄每次讀取的字節

14?long begin = System.currentTimeMillis();//?拷貝文件前的系統時間

15?while ((len = bInput.read()) != -1){????????//?讀取文件并判斷是否到達文件末尾

16?bOutput.write(len);?????????//?將讀到的字節寫入文件

17?}

18?long end = System.currentTimeMillis();????//?拷貝文件后的系統時間

19?System.out.println("拷貝文件耗時:" + (end - begin) + "毫秒");

20?bInput.close();

21?bOutput.close();

22?}

23?}

程序的運行結果如下:

拷貝文件耗時:51毫秒

例12-10的運行結果如上所示,拷貝img文件的時間為51毫秒,和未使用緩沖時相比,拷貝的速度明顯加快,因為緩沖流內部定義了一個長度為8192的字節數組作為緩沖區,在使用read()方法或write()方法進行讀寫時首先將數據存入該數組中,然后以數組為對象進行操作,這顯著降低了操作次數,讓程序完成同樣的工作花費了更少的時間。

12.4?字符流

前文講解了使用InputStream和OutputStream來處理字節流,也就是二進制文件,而Reader和Writer是用來處理字符流的,也就是文本文件。與文件字節輸入/輸出流的功能一樣,文件字符輸入/輸出類Reader和Writer只是建立了一條通往文本文件的通道,而要實現對字符數據的讀寫操作,還需要相應的讀方法和寫方法來完成。

12.4.1?字符流概述

除了字節流,Java還提供了字符流,用于操作字符。與字節流類似,字符流也有兩個抽象基類,分別是Reader和Writer。Reader是字符輸入流,用于從目標文件讀取字符;Writer是字符輸出流,用于向目標文件寫入字符。字符流也是由兩個抽象基類衍生出很多子類,由子類來實現功能,先來了解一下它們的子類結構,如圖12.9和圖12.10所示。

?

圖12.9 Reader子類結構圖 圖12.10 Writer子類結構圖

可以看出,字符流與字節流相似,也是很有規律的,這些子類都是以它們的抽象基類為結尾命名的,并且大多以Reader和Writer結尾,如CharArrayReader和CharArrayWriter。接下來,我們詳細講解字符流的使用。

12.4.2?操作文件

Reader和Writer有眾多子類,其中FileReader和FileWriter是兩個很常用的子類,FileReader類是用來從文件中讀取字符的,操作文件的字符輸入流。

接下來,通過案例來演示如何從文件中讀取字符。首先在當前目錄新建一個文本文件read.txt,文件內容如下:

AAA軟件教育

fileReader

????創建文件完成后,開始編寫代碼,如例12-11所示。

12-11?Demo1211.java

1?package com.aaa.p120402;

1?import java.io.*;

2

3?public class?Demo1211?{

4?public static void main(String[] args) throws Exception {

5?File file = new File("read.txt");

6?FileReader fileReader = new FileReader(file);

7?int len;?????????????????????????????//?定義len,記錄讀取的字符

8?while ((len = fileReader.read()) != -1){????//?判斷是否讀取到文件的末尾

9?System.out.print((char) len);?????????????//?打印文件內容

10?}

11?fileReader.close();?????????????????????//?釋放資源

12?}

13?}

程序的運行結果如下:

AAA軟件教育

fileReader

例12-11中,首先定義一個文件字符輸入流,然后在創建輸入流實例時,將文件以參數傳入,讀取到文件后,用變量len記錄讀取的字符,然后循環輸出。這里要注意len是int類型,所以輸出時要強轉類型,第10行中將len強轉為char類型。

????與FileReader類對應的是FileWriter類,它是用來將字符寫入文件,操作文件字符輸出流的。

接下來,通過案例來演示如何將字符寫入文件,如例12-12所示。

12-12?Demo1212.java

1?package com.aaa.p120402;

2?import java.io.*;

3

4?public class?Demo1212?{

5?public static void main(String[] args) throws Exception {

6?File file = new File("read.txt");

7?FileWriter fileWriter = new FileWriter(file);

8?fileWriter.write("AAA軟件專業的Java學習平臺");?????????????//?寫入文件的內容

9?System.out.println("已保存到read.txt!");

10?fileWriter.close();?????????????????????????????????????????//?釋放資源

11?}

12?}

程序的運行結果如下:

已保存到read.txt!

例12-12運行結果顯示已保存到read.txt文件,文件內容如下:

AAA軟件專業的Java學習平臺

FileWriter與FileOutputStream類似,如果指定的目標文件不存在,則先新建文件,再寫入內容,如果文件存在,會先清空文件內容,然后寫入新內容,但是結尾不加換行符。如果想在文件內容的末尾追加內容,則需要調用構造方法FileWriter?(String FileName,boolean append)來創建文件字符輸出流對象,將參數append指定為true即可,將例12-12第5行代碼修改如下:

FileWriter fileWriter = new FileWriter(file, true);

????再次運行程序,輸出流會將字符追加到文件內容的末尾,不會清除文件本身的內容,結尾同樣是沒有換行符的。

12.4.3?轉換流

前文分別講解了字節流和字符流,有時字節流和字符流之間可能也需要進行轉換,在JDK中提供了可以將字節流轉換為字符流的兩個類,分別是InputStreamReader類和OutputStreamWriter類,它們被稱之為轉換流。其中,OutputStreamWriter類可以將一個字節輸出流轉換成字符輸出流,而InputStreamReade類可以將一個字節輸入流轉換成字符輸入流。轉換流的出現方便了對文件的讀寫,它在字符流與字節流之間架起了一座橋梁,使原本沒有關聯的兩種流的操作能夠進行轉換,提高了程序的靈活性。通過轉換流進行讀寫數據的過程,如圖12.11所示。

圖12.11 轉換流示意圖

圖12.11中,程序向文件寫入數據時將輸出的字符流轉變為字節流,程序從文件讀取數據時將輸入的字節流變為字符流,有效地提高了讀寫效率。

接下來,通過案例來演示轉換流的使用。首先在當前目錄新建一個文本文件Conversion.txt,文件內容為“AAA軟件教育”。創建文件完成后,開始編寫代碼,如例12-13所示。

12-13?Demo1213java

1?package com.aaa.p120403;

2?import java.io.*;

3

4?public class Demo1213 {

5?public static void main(String[] args) throws IOException {

6?//?創建字節輸入流

7?FileInputStream input = new FileInputStream("Conversion.txt");

8?//?將字節輸入流轉換為字符輸入流

9?InputStreamReader inputReader = new InputStreamReader(input);

10?//?創建字節輸出流

11?FileOutputStream output = new FileOutputStream("target.txt");

12?//?將字節輸出流轉換成字符輸出流

13?OutputStreamWriter outputWriter = new OutputStreamWriter(output);

14?int str;

15?while ((str = inputReader.read()) != -1) {

16?outputWriter.write(str);

17?}

18?outputWriter.close();

19?inputReader.close();

20?}

21?}

例12-14程序運行結束后,會在當前目錄生成一個target.txt文件,如圖12.12和圖12.13所示。

?

圖12.12 文件拷貝前 圖12.13 文件拷貝后

在例12-13中實現了字節流與字符流之間的互相轉換,將字節流轉換為字符流,從而實現直接對字符的讀寫。這里要注意,如果用字符流操作非文本文件,如操作視頻文件,很有可能會造成部分數據丟失。

12.5?對象序列化方式

Java提供了一種對象序列化的機制,該機制中一個對象可以被表示為一個字節序列,該字節序列包括該對象的數據、對象的類型和存儲在對象中的數據的類型。將序列化對象寫入文件之后,可以從文件中讀取出來,并且對它進行反序列化。也就是說,對象的類型信息、對象的數據,還有對象中的數據類型可以用來在內存中新建對象。上述整個過程都是Java虛擬機(JVM)獨立完成的,這樣在一個平臺上序列化的對象可以在另一個完全不同的平臺上反序列化該對象。

12.5.1?對象序列化概述

序列化機制可以將實現序列化的Java對象轉換成字節序列,而這些字節序列可以保存在磁盤上,或者通過網絡傳輸,以備以后重新恢復成原來的對象繼續使用。序列化機制可以使Java對象脫離程序的運行而獨立存在。

對象的序列化(Serialize)是指將一個Java對象寫入I/O流中,與此對應,對象的反序列化(Deserialize)則是指從I/O流中恢復該Java對象。

如果需要讓某個對象支持序列化機制,則必須讓它的類是可序列化的(Serializable)。為了讓某個類是可序列化的,該類就需要實現Serializable或者Externalizable這兩個接口之一,一般推薦使用Serializable接口,因為Serializable接口只需實現不需要重寫任何方法,使用起來較為簡單。

Java的很多類其實已經實現了Serializable,該接口是一個標記接口,實現該接口時無須實現任何方法,它只是表明該類的實例是可序列化的。所有可能在網絡上傳輸的對象的類都必須是可序列化的,否則程序可能會出現異常,如RMI(Remote Method Invoke,即遠程方法調用,是Java EE的基礎)過程中的參數和返回值。所有需要保存到磁盤里的對象的類都必須可序列化,如Web應用中需要保存到HttpSession或ServletContext屬性的Java對象。

因為序列化是RMI過程的參數和返回值都必須實現的機制,而RMI又是Java EE技術的基礎,所有的分布式應用常常需要跨平臺、跨網絡,所以要求所有傳遞的參數、返回值必須實現序列化。因此,序列化機制是Java EE平臺的基礎,通常建議程序創建的每個JavaBean類都實現Serializable接口。

12.5.2?如何實現對象序列化的持久化

如果需要將某個對象保存到磁盤上或者通過網絡傳輸,那么這個類就需要實現Serializable接口或者Extermalizable接口之一。

使用Serializable來實現序列化非常簡單,主要讓目標類實現Serializable接口即可,無須實現任何方法。一旦某個類實現了Serializable接口,該類的對象就是可序列化的,程序可以通過如下兩個步驟來序列化該對象:

??創建一個ObjectOutputStream,這個輸出流是一個處理流,所以必須建立在其他節點流的基礎之上,代碼如下:

//?創建個?ObjectOutputStreamn輸出流

FileOutputStream fos = new FileOutputStream("person.txt");

ObjectOutputStream oos = new ObjectOutputStream(fos);

??調用ObjectOutputStream對象的writeObject()方法輸出可序列化對象,代碼如下:

//?將一個Person對象輸出到輸出流中

oos.writeObject(person);

下面的程序定義了一個Person類,這個類就是一個普通的Java類,只是實現了Serializable接口,該接口代表該類的對象是可序列化的,代碼如下:

1?import java.io.Serializable;

2

3?public class Person implements Serializable {

4?private String name;

5?private Integer age;

6?public Person(String name, Integer age) {

7?this.name = name;

8?this.age = age;

9?}

10?public String getName() {

11?return name;

12?}

13?public void setName(String name) {

14?this.name = name;

15?}

16?public Integer getAge() {

17?return age;

18?}

19?public void setAge(Integer age) {

20?this.age = age;

21?}

22?@Override

23?public String toString() {

24?return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';

25?}

26?}

接下來,通過案例來演示使用ObjectOutputStream將一個Person對象寫入磁盤文件,如例12-14所示。

12-14?Demo1214.java

1?package com.aaa.p120502;

2

3?public class Demo1214 {

4?public static void main(String[] args) {

5?try (FileOutputStream fos = new FileOutputStream("person.txt");

6?ObjectOutputStream oos = new ObjectOutputStream(fos)) {

7?Person person = new Person("小喬", 18);

8?oos.writeObject(person);

9?} catch (IOException e) {

10?e.printStackTrace();

11?}

12?}

13?}

例12-14中,第6行代碼創建了一個ObjectOutputStream輸出流,這個ObjectOutputStream輸出流建立在一個文件輸出流的基礎之上,第8行代碼使用writeObject()方法將一個Person對象寫入輸出流。運行這段代碼,將會看到生成了一個Person.txt文件,該文件的內容就是Person對象。

如果想從二進制流中恢復Java對象,則需要使用反序列化。反序化的的步驟如下:

??創建一個ObjectInputStream輸入流,這個輸入流是個處理流,所以必須建立在其他節點流的基礎之上,代碼如下:

//?創建一個ObjectInputStream輸入流

FileInputStream fis = new FileInputStream("person.txt");

ObjectInputStream ois = new ObjectInputStream(fis);

??調用ObjectInputStream對象的readObject()方法讀取流中的對象,該方法返回一個Object類型的Java對象,如果程序知道該Java對象的類型,則可以將該對象強制類型轉換成其真實的類型,代碼如下:

//?從輸入流中讀取一個Java對象,并將其強制類型轉換為Person類

Person person = (Person)?ois.readObject();

接下來,通過案例來演示從剛剛生成的person.txt文件中讀取Person對象,如例12-15所示。

12-15?Demo1215.java

1?package com.aaa.p120502;

2

3?public class Demo1215 {

4?public static void main(String[] args) {

5?try (FileInputStream fis = new FileInputStream("person.txt");

6?ObjectInputStream ois = new ObjectInputStream(fis)) {

7?Person person = (Person) ois.readObject();

8?System.out.println(person);

9?} catch (Exception e) {

10?e.printStackTrace();

11?}

12?}

13?}

例12-15中,第6行代碼將一個文件輸入流包裝成ObjectInputStream輸入流,第7行代碼使用readObject()讀取了文件中的Java對象,這就完成了反序列化過程。

必須指出的是,反序列化讀取的僅僅是Java對象的數據,而不是Java類,因此采用反序列化恢復Java對象時,必須提供該Java對象所屬類的class文件,否則將會引發ClassNotFoundException異常。

注意:在ObjectInputStream輸入流中的readObject()方法聲明拋出了ClassNotFoundException異常,也就是說,當反序列化時找不到對應的Java類時將會引發該異常。

如果使用序列化機制向文件中寫入了多個Java對象,使用反序列化機制恢復對象時必須按實際寫入的順序讀取。

當一個可序列化類有多個父類時(包括直接父類和間接父類),這些父類要么有無參數的構造器,?要么也是可序列化的,否則反序列化時將拋出InvalidClassException異常。如果父類是不可序列化的,只是帶有無參數的構造器,則該父類中定義的成員變量值不會序列化到二進制流中。

12.5.3?引用對象的序列化控制

前文中的Person類的兩個成員變量分別是String類型和Integer類型,如果某個類的成員變量的類型不是基本類型或String類型,而是另一個引用類型,那么這個引用類必須是可序列化的,否則擁有該類型成員變量的類也是不可序列化的。

下面的程序中,Teacher類持有一個Student類的引用,只有Student類是可序列化的,Teacher類才是可序列化?的。如果Student類不可序列化,則無論Teacher類是否實現Serilizable或Externalizable接口,則Teacher類都是不可序列化的。代碼如下:

1?public class Teacher implements Serializable {

2?private String name;

3?private Student student;

4?public Teacher(String name, Student student) {

5?this.name = name;

6?this.student = student;

7?}

8?public String getName() {

9?return name;

10?}

11?public void setName(String name) {

12?this.name = name;

13?}

14?public Student getStudent() {

15?return student;

16?}

17?public void setStudent(Student student) {

18?this.student = student;

19?}

20?@Override

21?public String toString() {

22?return "Teacher{" +?"name='" + name + '\'' +", student=" + student +'}';

23?}

24?}

25

26?class Student implements Serializable {

27?private String name;

28?private Integer age;

29?public Student(String name, Integer age) {

30?this.name = name;

31?this.age = age;

32?}

33?public String getName() {

34?return name;

35?}

36?public void setName(String name) {

37?this.name = name;

38?}

39?public Integer getAge() {

40?return age;

41?}

42?public void setAge(Integer age) {

43?this.age = age;

44?}

45?@Override

46?public String toString() {

47?return "Student{" + "name='" + name + '\'' + ", age=" + age + '}';

48?}

49?}

注意:當程序序列化一個Teacher對象時,如果該Teacher對象持有一個Student對象的引用,為了在反序列化時可以正常恢復該Teacher對象,程序會順帶將該Student對象也進行序列化,所以Student類也必須是可序列化的,否則Teacher類將不可序列化。

現在假設有如下特殊情形:程序中有兩個Teacher對象,它們的student實例變量都引用同一個Student對象,而且該Student對象還有一個引用變量引用它,代碼如下:

Student student = new Student("小喬", 18);

Teacher teacher1 = new Teacher("周瑜", student);

Teacher teacher2 = new Teacher("曹操", student);

上述代碼創建了兩個Teacher對象和一個Student對象,這3個對象在內存中的存儲示意圖如圖12.14所示。

這里產生了一個問題,如果先序列化teacher1對象,則系統將該teacherl對象所引用的Student對象一起序列化。當程序再次序列化teacher2對象時,系統則一樣會序列化該teacher2對象,并且會再次序列化teacher2對象所引用的Student對象。如果程序再顯式序列化student對象,系統將再次序列化該Student對象。這個過程似乎會向輸出流中輸出3個Student對象。

如果系統向輸出流中寫入了3個Student對象,那么后果是當程序從輸入流中反序列化這些對象時,將會得到3個Student對象,從而導致teacher1和teacher2所引用的Student對象不是同一個對象,這顯然與圖12.12所示的效果不一致,也違背了Java序列化機制的初衷。所以,Java序列化機制采用了一種特殊的序列化算法,其算法內容如下:

??所有保存到磁盤中的對象都有一個序列化編號。

??當程序試圖序列化一個對象時,程序將先檢查該對象是否已經被序列化過,只有該對象從未(在本次虛擬機中)被序列化過,系統才會將該對象轉換成字節序列并輸出。

??如果某個對象已經序列化過,程序將只是直接輸出一個序列化編號,而不是再次重新序列化該對象。

根據上面的序列化算法,可以得到一個結論,當第2次、第3次序列化Student對象時,程序不會再次將Student對象轉換成字節序列并輸出,而是僅僅輸出一個序列化編號。例如,有如下順序的序列化代碼:

oos.writeObject(teacher1);

oos.writeObject(teacher2);

oos.writeObject(student);

上面代碼一次序列化了teacher1、teacher2和student對象,序列化后磁盤文件的存儲示意圖如圖12.15所示,通過改圖可以很好地理解Java序列化的底層機制。不難看出,當多次調用writeObject()方法輸出同一個對象時,只有當第1次調用writeObject()方法時才會將該對象轉換成字節序列并輸出。

接下來,通過案例來演示序列化兩個Teacher對象,兩個Teacher對象都持有一個引用同一個Student對象的引用,而且程序兩次調用writeObject()方法輸出同一個Teacher對象,如例12-16所示。

12-16?Demo1216.java

1?package com.aaa.p120503;

2

3?public class?Demo1216?{

4?public static void main(String[] args) {

5?try (FileOutputStream fos = new FileOutputStream("teacher.txt");

6?ObjectOutputStream oos = new ObjectOutputStream(fos)) {

7?Student student = new Student("小喬", 18);

8?Teacher teacher1 = new Teacher("周瑜", student);

9?Teacher teacher2 = new Teacher("曹操", student);

10?oos.writeObject(teacher1);

11?oos.writeObject(teacher2);

12?oos.writeObject(student);

13?oos.writeObject(teacher2);

14?} catch (Exception e) {

15?e.printStackTrace();

16?}

17?}

18?}

例12-16中,4次調用了writeObject0方法來輸出對象,實際上只序列化了3個對象,而且序列的兩個Teacher對象的student引用實際是同一個Student對象。

接下來,通過案例來演示讀取序列化文件中的對象,如例12-17所示。

12-17?Demo1217.java

1?package com.aaa.p120503;

2

3?public class Demo1217 {

4?public static void main(String[] args) {

5?try (FileInputStream fis = new FileInputStream("teacher.txt");

6?ObjectInputStream ois = new ObjectInputStream(fis)) {

7?Teacher t1 = (Teacher) ois.readObject();

8?Teacher t2 = (Teacher) ois.readObject();

9?Student s = (Student) ois.readObject();

10?Teacher t3 = (Teacher) ois.readObject();

11?System.out.println("t1的student引用和s是不是相同對象:"

12?+ (t1.getStudent() == s));

13?System.out.println("t2的student引用和s是不是相同對象:"

14?+ (t2.getStudent() == s));

15?System.out.println("t2和t3是不是相同對象:" + (t2 == t3));

16?} catch (Exception e) {

17?e.printStackTrace();

18?}

19?}

20?}

程序運行結果如下:

t1的student引用和s是不是相同對象:true

t2的student引用和s是不是相同對象:true

t2和t3是不是相同對象:true

例12-17中,代碼依次讀取了序列化文件中的4個Java對象,但通過后面的比較判斷,不難發現t2和t3是同一個Java對象,tl、t2和s?的引用變量引用的也是同一個Java對象,這證明了圖12.15所示的序列化機制。

根據Java序列化機制,如果多次序列化同一個Java對象時,只有第1次序列化時才會把該Java?對象轉換成字節序列并輸出,這樣也可能會引發一個潛在的問題,即當程序序列化一個可變對象時,只有第1次使用writeObject()方法輸出時才會將該對象轉換成字節序列并輸出,當程序再次調用writeObject()方法時,程序只是輸出前面的序列化編號,即使后面該對象的實例變量值已被改變,改變的實例變量值也不會被輸出,如例12-18所示。

12-18?Demo1218.java

1?package com.aaa.p120503;

2

3?public class Demo1218 {

4?public static void main(String[] args) {

5?try (FileOutputStream fos = new FileOutputStream("teacher.txt");

6?ObjectOutputStream oos = new ObjectOutputStream(fos);

7?FileInputStream fis = new FileInputStream("teacher.txt");

8?ObjectInputStream ois = new ObjectInputStream(fis)) {

9?Student student1 = new Student("小喬", 18);

10?oos.writeObject(student1);

11?student1.setName("大喬");

12?System.out.println("修改name后:" + student1);

13?oos.writeObject(student1);

14?Student s2 = (Student) ois.readObject();

15?Student s3 = (Student) ois.readObject();

16?System.out.println("s2與s3進行對比:" + (s2 == s3));

17?System.out.println("s2反序列化后:" + s2);

18?System.out.println("s3反序列化后:" + s3);

19?} catch (Exception e) {

20?e.printStackTrace();

21?}

22?}

23?}

程序的運行結果如下:

修改name后:Student{name='大喬', age=18}

s2與s3進行對比:true

s2反序列化后:Student{name='小喬', age=18}

s3反序列化后:Student{name='小喬', age=18}

例12-18中,先使用writeObject()方法寫入了一個Student對象,接著改變了Student對象的實例變量name的值,然后程序再次序列化輸出Student對象,但這次不會將Student對象轉換成字節序列輸出了,而是僅輸出了一個序列化編號。第14行和第15行的代碼兩次調用readObject()方法讀取了序列化文件中的Java對象,比較兩次讀取的Java對象結果為true,證明是同一對象。然后,程序再次輸出兩個對象,兩個對象的name值依然是“小喬”,表明改變后的Student對象并沒有被寫入,這與Java序列化機制相符。

注意:當使用Java序列化機制去序列化可變對象時一定要注意,只有第一次調用writeObject()方法來輸出對象時才會將對象轉換成字節序列,并寫入到ObjectOutputStream。在后面程序中,即使該對象的實例變量發生了改變,再次調用writeObject()方法輸出該對象時,改變后的實例變量也不會被輸出。

12.6?本章小結

? Java I/O系統負責處理程序的輸入和輸出,I/O類庫位于java.io包中,它對各種常見的輸入流和輸出流進行了抽象。

? 通過調用File類提供的各種方法,能夠完成創建文件、刪除文件、重命名文件、判斷文件的讀寫權限以及文件是否存在、設置和查詢文件的創建時間和權限等操作。

? 根據數據的讀取或寫入分類,流可以分為輸入流和輸出流。

? 根操作對象分類,流可以分為字節流和字符流。字節流可以處理所有類型數據,如圖片、MP3、AVI視頻文件等,而字符流只能處理字符數據。只要是處理純文本數據,就要優先考慮使用字符流,除此之外都用字節流。

? Java的序列化機制可以將實現序列化的Java對象轉換成字節序列,而這些字節序列可以保存在磁盤上,或者通過網絡傳輸,以備以后重新恢復成原來的對象繼續使用。

? Java的反序列化機制是客戶端從文件中或網絡上獲得序列化后的對象字節流后,根據字節流中所保存的對象狀態及描述信息,通過反序列化重建對象。

12.7?理論試題與實踐練習

1.填空題

1.1????關于文件的類都放在?包下面。

1.2????字節流有兩個抽象基類?和?,分別處理字節流的輸入和輸出。

2.選擇題

2.1 下面哪個流類屬于面向字符的輸入流( )

A.BufferedWriter????????????????????B.FileInputStream

C.ObjectInputStream????????????????D.InputStreamReader

2.2 新建一個流對象,下面哪個選項的代碼是錯誤的( )

A.new BufferedWriter(new FileWriter("a.txt"));

????B.new BufferedReader(new FileInputStream("a.dat"));

C.new GZIPOutputStream(new FileOutputStream("a.zip"));

????D.new ObjectInputStream(new FileInputStream("a.dat"));

2.3 要從文件“file.dat”中讀出第10個字節到變量c中,下列哪個方法適合( )

A.FileInputStream in = new FileInputStream("file.dat"); in.skip(9); int c = in.read();

????B.FileInputStream in = new FileInputStream("file.dat"); in.skip(10); int c = in.read();

C.FileInputStream in = new FileInputStream("file.dat"); int c = in.read();

????D.RandomAccessFile in = new RandomAccessFile("file.dat"); in.skip(9);

2.4 Java I/O程序設計中,下列描述正確的是( )

A.OutputStream用于寫操作????????B.InputStream用于寫操作

C.只有字節流可以進行讀操作????????D.I/O庫不支持對文件可讀可寫API

2.5 下列哪個不是合法的字符編碼( )

A.UTF-8????????????????????????B.ISO8859-1

C.GBL????????????????????????????D.ASCII

3.思考題

3.1????請簡述Java中有幾種類型的流??????

4.編程題

4.1 編寫一個程序,要求用戶輸入一個路徑,運行程序列出路徑下的所有文件。

4.2 編寫一個程序實現文件拷貝功能,要求用戶輸入源文件路徑和目標文件路徑,運行程序實現文件拷貝。

4.3 編寫一個程序,產生50個1~9999之間的隨機數,然后利用BufferedWriter類將其寫入到文件file.txt中,之后再讀取這些數字,并進行升序排列。

總結

以上是生活随笔為你收集整理的JAVA输入/输出流详细讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

丁香啪啪综合成人亚洲 | 97无码免费人妻超级碰碰夜夜 | 动漫av网站免费观看 | 人人超人人超碰超国产 | 欧美老熟妇乱xxxxx | 亚洲色大成网站www | 欧美性生交活xxxxxdddd | 伊人久久大香线焦av综合影院 | 成年美女黄网站色大免费全看 | 在线成人www免费观看视频 | 亚洲国产精品一区二区美利坚 | 午夜成人1000部免费视频 | 国产精品亚洲lv粉色 | 一本久道久久综合狠狠爱 | v一区无码内射国产 | 亚洲欧美精品aaaaaa片 | 又黄又爽又色的视频 | 粗大的内捧猛烈进出视频 | 永久黄网站色视频免费直播 | 中文字幕人成乱码熟女app | 亚洲一区二区三区国产精华液 | 香港三级日本三级妇三级 | 午夜男女很黄的视频 | 日本熟妇乱子伦xxxx | av在线亚洲欧洲日产一区二区 | 国精产品一品二品国精品69xx | 欧美人与牲动交xxxx | 少妇人妻偷人精品无码视频 | 300部国产真实乱 | 亚洲国产一区二区三区在线观看 | 欧美性猛交xxxx富婆 | 国内精品九九久久久精品 | 少妇性荡欲午夜性开放视频剧场 | 又粗又大又硬毛片免费看 | 97se亚洲精品一区 | 装睡被陌生人摸出水好爽 | 亚洲天堂2017无码中文 | 成人女人看片免费视频放人 | 夜先锋av资源网站 | 偷窥村妇洗澡毛毛多 | 国产精品igao视频网 | 99久久婷婷国产综合精品青草免费 | 粉嫩少妇内射浓精videos | 人人妻人人澡人人爽欧美一区九九 | 精品久久久久久人妻无码中文字幕 | 色欲av亚洲一区无码少妇 | 成人免费视频一区二区 | 国产情侣作爱视频免费观看 | 天下第一社区视频www日本 | 精品国产一区二区三区四区 | 丝袜 中出 制服 人妻 美腿 | 亚洲日韩精品欧美一区二区 | 色婷婷综合中文久久一本 | 东京热一精品无码av | 亚洲欧美日韩综合久久久 | 日本丰满熟妇videos | 国产手机在线αⅴ片无码观看 | 乱人伦中文视频在线观看 | 久久精品视频在线看15 | 精品无码国产一区二区三区av | 国产激情无码一区二区app | 人妻无码αv中文字幕久久琪琪布 | 国产精品久久精品三级 | 成人性做爰aaa片免费看不忠 | 欧美高清在线精品一区 | 97人妻精品一区二区三区 | 国产农村妇女高潮大叫 | 午夜理论片yy44880影院 | 国产香蕉尹人综合在线观看 | 国产精品理论片在线观看 | 狠狠色丁香久久婷婷综合五月 | 性欧美疯狂xxxxbbbb | 狠狠综合久久久久综合网 | 婷婷丁香五月天综合东京热 | 高潮毛片无遮挡高清免费视频 | 日本护士毛茸茸高潮 | 天堂在线观看www | 国内少妇偷人精品视频免费 | 国产美女精品一区二区三区 | 午夜精品久久久久久久 | 精品无人区无码乱码毛片国产 | 搡女人真爽免费视频大全 | 亚洲欧洲中文日韩av乱码 | 丰满肥臀大屁股熟妇激情视频 | 亚洲欧美日韩成人高清在线一区 | 大乳丰满人妻中文字幕日本 | 久久久久亚洲精品中文字幕 | 免费国产黄网站在线观看 | 人人爽人人澡人人人妻 | 天天摸天天碰天天添 | 中文精品久久久久人妻不卡 | 欧美激情综合亚洲一二区 | 日日摸日日碰夜夜爽av | 久久熟妇人妻午夜寂寞影院 | 色诱久久久久综合网ywww | 99视频精品全部免费免费观看 | 无码一区二区三区在线 | 无码播放一区二区三区 | 亚洲va中文字幕无码久久不卡 | 久久国产精品精品国产色婷婷 | 久久久久亚洲精品男人的天堂 | 少妇一晚三次一区二区三区 | 亚洲aⅴ无码成人网站国产app | 国产精品久久久久无码av色戒 | 亚洲大尺度无码无码专区 | 最近的中文字幕在线看视频 | 国产激情无码一区二区app | 久久久久亚洲精品男人的天堂 | 欧美黑人性暴力猛交喷水 | 国产色视频一区二区三区 | 人妻少妇精品无码专区动漫 | 欧美国产日产一区二区 | 亚洲精品成人福利网站 | 亚洲男女内射在线播放 | 国产成人午夜福利在线播放 | 自拍偷自拍亚洲精品10p | 日韩少妇白浆无码系列 | 丰腴饱满的极品熟妇 | 亚洲gv猛男gv无码男同 | 在线播放亚洲第一字幕 | 亚洲精品鲁一鲁一区二区三区 | 久久久久99精品国产片 | 成人片黄网站色大片免费观看 | 纯爱无遮挡h肉动漫在线播放 | 亚洲の无码国产の无码影院 | 国产精品内射视频免费 | 亚洲欧美国产精品专区久久 | 色情久久久av熟女人妻网站 | 久久综合给久久狠狠97色 | 毛片内射-百度 | 欧美激情综合亚洲一二区 | 激情亚洲一区国产精品 | 99国产精品白浆在线观看免费 | 亚洲成色www久久网站 | 自拍偷自拍亚洲精品被多人伦好爽 | 男女猛烈xx00免费视频试看 | 中文字幕无码乱人伦 | 在线播放免费人成毛片乱码 | 国内精品九九久久久精品 | 爆乳一区二区三区无码 | 国产亚洲欧美日韩亚洲中文色 | 欧美xxxx黑人又粗又长 | a片免费视频在线观看 | 精品熟女少妇av免费观看 | 午夜福利一区二区三区在线观看 | 欧美人与牲动交xxxx | 亚洲色在线无码国产精品不卡 | 国产乡下妇女做爰 | 精品欧美一区二区三区久久久 | 青春草在线视频免费观看 | 国产两女互慰高潮视频在线观看 | 97se亚洲精品一区 | 丝袜美腿亚洲一区二区 | 欧美大屁股xxxxhd黑色 | 男人和女人高潮免费网站 | 久久精品成人欧美大片 | 一本无码人妻在中文字幕免费 | 好爽又高潮了毛片免费下载 | 国产办公室秘书无码精品99 | 欧美三级a做爰在线观看 | 久久午夜夜伦鲁鲁片无码免费 | 天天摸天天碰天天添 | 乱人伦人妻中文字幕无码 | 3d动漫精品啪啪一区二区中 | 久精品国产欧美亚洲色aⅴ大片 | 大肉大捧一进一出视频出来呀 | 青草视频在线播放 | 欧美成人高清在线播放 | 丰满人妻一区二区三区免费视频 | 亚洲成在人网站无码天堂 | 国产精品高潮呻吟av久久4虎 | 一本色道婷婷久久欧美 | 天堂无码人妻精品一区二区三区 | 永久免费观看国产裸体美女 | 特黄特色大片免费播放器图片 | 波多野结衣一区二区三区av免费 | 免费男性肉肉影院 | 男人和女人高潮免费网站 | 久久久久亚洲精品中文字幕 | 亚洲中文字幕乱码av波多ji | 久久无码专区国产精品s | 精品亚洲韩国一区二区三区 | 亚洲精品一区二区三区在线观看 | 成人精品视频一区二区三区尤物 | 国产97在线 | 亚洲 | 久久精品无码一区二区三区 | 最近的中文字幕在线看视频 | 真人与拘做受免费视频 | 亚洲国产精品无码久久久久高潮 | 国产无套粉嫩白浆在线 | 国产成人无码a区在线观看视频app | 中文字幕乱码人妻二区三区 | 人妻无码久久精品人妻 | 久久精品国产精品国产精品污 | 亚洲欧洲中文日韩av乱码 | 99久久99久久免费精品蜜桃 | 国产精品无码成人午夜电影 | 大肉大捧一进一出好爽视频 | 国产一区二区三区精品视频 | 欧美日韩一区二区综合 | 日本饥渴人妻欲求不满 | 性做久久久久久久免费看 | 国产艳妇av在线观看果冻传媒 | 女人被男人爽到呻吟的视频 | 小鲜肉自慰网站xnxx | 欧美日本免费一区二区三区 | 国产 精品 自在自线 | 中文字幕无码日韩欧毛 | 日本护士xxxxhd少妇 | 又湿又紧又大又爽a视频国产 | 18无码粉嫩小泬无套在线观看 | 精品国精品国产自在久国产87 | 人妻无码久久精品人妻 | 国产艳妇av在线观看果冻传媒 | 性史性农村dvd毛片 | 成人无码视频在线观看网站 | aⅴ在线视频男人的天堂 | 精品国产福利一区二区 | 一本久久a久久精品vr综合 | 搡女人真爽免费视频大全 | 国产精品亚洲一区二区三区喷水 | 国产精品理论片在线观看 | 精品久久久久久亚洲精品 | 人妻无码αv中文字幕久久琪琪布 | 中文字幕乱码中文乱码51精品 | 97久久超碰中文字幕 | 欧美丰满熟妇xxxx | 欧美激情一区二区三区成人 | 少妇性俱乐部纵欲狂欢电影 | 亚洲の无码国产の无码步美 | a片在线免费观看 | 黑人玩弄人妻中文在线 | 久久综合狠狠综合久久综合88 | 亚洲国产精品无码久久久久高潮 | 99精品无人区乱码1区2区3区 | 精品久久综合1区2区3区激情 | 男人的天堂av网站 | 久久午夜无码鲁丝片秋霞 | 久精品国产欧美亚洲色aⅴ大片 | 成人无码视频免费播放 | 中国女人内谢69xxxxxa片 | 久久久国产精品无码免费专区 | 国产精品亚洲综合色区韩国 | 中文字幕av伊人av无码av | 国产精品资源一区二区 | 色 综合 欧美 亚洲 国产 | 噜噜噜亚洲色成人网站 | 无码精品国产va在线观看dvd | 免费男性肉肉影院 | 国产成人无码av在线影院 | 狠狠亚洲超碰狼人久久 | 亚洲色无码一区二区三区 | 亚洲日韩中文字幕在线播放 | 最近中文2019字幕第二页 | 日韩人妻少妇一区二区三区 | 牲交欧美兽交欧美 | 76少妇精品导航 | 亚洲国产欧美日韩精品一区二区三区 | 日日摸日日碰夜夜爽av | 国产精品无码mv在线观看 | 55夜色66夜色国产精品视频 | 极品嫩模高潮叫床 | 高清无码午夜福利视频 | 图片区 小说区 区 亚洲五月 | www国产亚洲精品久久网站 | 国产97在线 | 亚洲 | 国产一区二区三区日韩精品 | 日韩av无码一区二区三区不卡 | 国产无遮挡吃胸膜奶免费看 | 亚洲乱码日产精品bd | 久久久精品人妻久久影视 | 日产精品高潮呻吟av久久 | 噜噜噜亚洲色成人网站 | 精品一区二区三区无码免费视频 | 一本久久伊人热热精品中文字幕 | 欧美人与动性行为视频 | 性欧美牲交xxxxx视频 | 人人爽人人澡人人高潮 | 亚洲精品国偷拍自产在线麻豆 | 亚欧洲精品在线视频免费观看 | 精品欧美一区二区三区久久久 | 亚洲中文字幕在线无码一区二区 | 装睡被陌生人摸出水好爽 | 中文字幕无码免费久久99 | 久久午夜无码鲁丝片午夜精品 | 国产成人无码av在线影院 | 无码人妻出轨黑人中文字幕 | 扒开双腿疯狂进出爽爽爽视频 | 东京热男人av天堂 | 亚洲区小说区激情区图片区 | 天天av天天av天天透 | 久久久久久久久888 | 成人亚洲精品久久久久软件 | 欧美人与牲动交xxxx | 久久精品国产一区二区三区肥胖 | 网友自拍区视频精品 | 亚洲国产一区二区三区在线观看 | 日欧一片内射va在线影院 | 澳门永久av免费网站 | 久久精品无码一区二区三区 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美性黑人极品hd | 欧美日韩精品 | 无人区乱码一区二区三区 | 亚洲精品一区三区三区在线观看 | 久久久国产精品无码免费专区 | 久久精品女人天堂av免费观看 | 久久精品无码一区二区三区 | 国产舌乚八伦偷品w中 | 麻豆人妻少妇精品无码专区 | 少妇性l交大片欧洲热妇乱xxx | 久久国产精品二国产精品 | 在线精品亚洲一区二区 | 日日碰狠狠丁香久燥 | 精品aⅴ一区二区三区 | 色一情一乱一伦 | 中文字幕无码免费久久9一区9 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产精品毛多多水多 | 国产精品久久国产精品99 | 欧美激情一区二区三区成人 | аⅴ资源天堂资源库在线 | 扒开双腿疯狂进出爽爽爽视频 | 俄罗斯老熟妇色xxxx | 午夜熟女插插xx免费视频 | 国产区女主播在线观看 | 国产精品久久国产三级国 | 欧洲熟妇色 欧美 | 性做久久久久久久免费看 | 亚洲人成无码网www | 国产在热线精品视频 | 无码av免费一区二区三区试看 | 无码av最新清无码专区吞精 | av无码电影一区二区三区 | 精品久久久中文字幕人妻 | 色一情一乱一伦一区二区三欧美 | 中文字幕精品av一区二区五区 | 亚洲熟悉妇女xxx妇女av | 日本熟妇人妻xxxxx人hd | 中文无码成人免费视频在线观看 | 日日摸天天摸爽爽狠狠97 | 日日天日日夜日日摸 | 国产精品亚洲专区无码不卡 | 伦伦影院午夜理论片 | 草草网站影院白丝内射 | 日日躁夜夜躁狠狠躁 | 鲁大师影院在线观看 | 午夜精品一区二区三区的区别 | 欧美日韩在线亚洲综合国产人 | 粗大的内捧猛烈进出视频 | 人人妻人人澡人人爽人人精品 | 无码乱肉视频免费大全合集 | 欧美午夜特黄aaaaaa片 | 蜜桃无码一区二区三区 | 麻豆av传媒蜜桃天美传媒 | 久久精品国产亚洲精品 | 国产高清av在线播放 | 在线观看国产一区二区三区 | 欧美 日韩 人妻 高清 中文 | 无码人妻av免费一区二区三区 | 中文毛片无遮挡高清免费 | 国产xxx69麻豆国语对白 | 欧美35页视频在线观看 | 色欲av亚洲一区无码少妇 | 国产成人无码a区在线观看视频app | 亚洲国产av精品一区二区蜜芽 | 国产精品高潮呻吟av久久4虎 | 亚洲熟妇色xxxxx亚洲 | 精品熟女少妇av免费观看 | 中文字幕人妻无码一区二区三区 | 在线亚洲高清揄拍自拍一品区 | 日日碰狠狠躁久久躁蜜桃 | 精品久久久久久亚洲精品 | 亚洲精品国产精品乱码视色 | 亚洲精品无码人妻无码 | 国产激情精品一区二区三区 | 亚洲中文无码av永久不收费 | 久久精品99久久香蕉国产色戒 | 国産精品久久久久久久 | 久久99精品国产麻豆 | 精品厕所偷拍各类美女tp嘘嘘 | 麻豆蜜桃av蜜臀av色欲av | 亚洲第一网站男人都懂 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 午夜丰满少妇性开放视频 | 国产精品第一国产精品 | 国产精品资源一区二区 | 欧美丰满熟妇xxxx | 久久久精品人妻久久影视 | 欧美 日韩 人妻 高清 中文 | 亚洲色无码一区二区三区 | 狠狠综合久久久久综合网 | 免费播放一区二区三区 | 国产明星裸体无码xxxx视频 | 乌克兰少妇性做爰 | √天堂资源地址中文在线 | 99久久亚洲精品无码毛片 | 亚洲中文无码av永久不收费 | 一本色道久久综合狠狠躁 | 午夜福利不卡在线视频 | 午夜福利一区二区三区在线观看 | 人人妻人人澡人人爽欧美一区九九 | 国产无套内射久久久国产 | 成人影院yy111111在线观看 | 国产精品手机免费 | 久久人妻内射无码一区三区 | 伊人久久大香线蕉午夜 | 少妇性l交大片 | 国产两女互慰高潮视频在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产另类ts人妖一区二区 | 最新国产乱人伦偷精品免费网站 | 窝窝午夜理论片影院 | 无码毛片视频一区二区本码 | 亚洲日韩av一区二区三区中文 | 日韩成人一区二区三区在线观看 | av无码电影一区二区三区 | 99er热精品视频 | 国产亚洲欧美在线专区 | 欧美性生交活xxxxxdddd | 男女超爽视频免费播放 | 真人与拘做受免费视频 | 亚洲欧美日韩国产精品一区二区 | 精品人妻中文字幕有码在线 | 色婷婷香蕉在线一区二区 | 正在播放老肥熟妇露脸 | 性生交大片免费看l | 亚洲色大成网站www | 国产成人亚洲综合无码 | 性欧美熟妇videofreesex | 精品日本一区二区三区在线观看 | 国产精品久久国产三级国 | 无码帝国www无码专区色综合 | 成人精品视频一区二区 | 永久免费观看国产裸体美女 | 中文字幕日韩精品一区二区三区 | 中文无码精品a∨在线观看不卡 | 无码精品国产va在线观看dvd | 亚洲中文字幕在线无码一区二区 | 国产免费久久久久久无码 | 装睡被陌生人摸出水好爽 | 少妇无套内谢久久久久 | 中文字幕人妻丝袜二区 | 国产日产欧产精品精品app | 又色又爽又黄的美女裸体网站 | 欧洲欧美人成视频在线 | 久久www免费人成人片 | 久久国产精品偷任你爽任你 | av在线亚洲欧洲日产一区二区 | 亚洲一区二区三区无码久久 | 亚洲gv猛男gv无码男同 | 日韩精品乱码av一区二区 | av人摸人人人澡人人超碰下载 | 福利一区二区三区视频在线观看 | 99在线 | 亚洲 | 亚洲乱码日产精品bd | 福利一区二区三区视频在线观看 | 美女黄网站人色视频免费国产 | 国产亚洲日韩欧美另类第八页 | 国产成人精品久久亚洲高清不卡 | 国产亚洲精品久久久久久国模美 | 亚洲无人区午夜福利码高清完整版 | 久久精品国产亚洲精品 | 色欲人妻aaaaaaa无码 | 亚洲成av人片在线观看无码不卡 | 色窝窝无码一区二区三区色欲 | 国产成人综合美国十次 | 日本乱偷人妻中文字幕 | 色妞www精品免费视频 | 精品日本一区二区三区在线观看 | 国产一区二区三区影院 | 亚洲精品鲁一鲁一区二区三区 | 欧美日韩视频无码一区二区三 | 爱做久久久久久 | 任你躁在线精品免费 | 亚洲成av人影院在线观看 | 十八禁视频网站在线观看 | 午夜丰满少妇性开放视频 | 国产片av国语在线观看 | 欧美zoozzooz性欧美 | 久激情内射婷内射蜜桃人妖 | 国产亚洲精品久久久ai换 | 亚洲国产午夜精品理论片 | 高中生自慰www网站 | 亚洲人成网站色7799 | 国产色在线 | 国产 | 激情内射亚州一区二区三区爱妻 | 欧洲欧美人成视频在线 | 一本大道久久东京热无码av | 久久久www成人免费毛片 | 好男人社区资源 | 亚洲成a人片在线观看无码 | 亚洲热妇无码av在线播放 | 老子影院午夜伦不卡 | 国产熟妇高潮叫床视频播放 | 激情人妻另类人妻伦 | 亚洲国产精品成人久久蜜臀 | 夜夜高潮次次欢爽av女 | 精品国产乱码久久久久乱码 | 四虎影视成人永久免费观看视频 | 国产精品久久福利网站 | 亚洲熟悉妇女xxx妇女av | www国产精品内射老师 | 亚洲精品中文字幕久久久久 | www国产精品内射老师 | 老熟女重囗味hdxx69 | 丝袜美腿亚洲一区二区 | 乱人伦中文视频在线观看 | 国产成人无码午夜视频在线观看 | 奇米影视888欧美在线观看 | 人人澡人人妻人人爽人人蜜桃 | 中文字幕乱码中文乱码51精品 | a在线观看免费网站大全 | 暴力强奷在线播放无码 | 久久精品国产一区二区三区肥胖 | 国产成人人人97超碰超爽8 | 高潮喷水的毛片 | 又粗又大又硬又长又爽 | a片免费视频在线观看 | 久在线观看福利视频 | 亚洲综合色区中文字幕 | 久久久无码中文字幕久... | 在线亚洲高清揄拍自拍一品区 | 最近免费中文字幕中文高清百度 | 国产国产精品人在线视 | 综合网日日天干夜夜久久 | 国产国语老龄妇女a片 | 极品嫩模高潮叫床 | 18精品久久久无码午夜福利 | 99久久久无码国产aaa精品 | 欧美精品国产综合久久 | 精品熟女少妇av免费观看 | 波多野结衣av一区二区全免费观看 | 99久久婷婷国产综合精品青草免费 | 国产精品久久久久无码av色戒 | 精品国产乱码久久久久乱码 | 未满成年国产在线观看 | 国产精品99久久精品爆乳 | 在线观看免费人成视频 | 极品尤物被啪到呻吟喷水 | 国产成人精品视频ⅴa片软件竹菊 | 中文字幕无线码 | 亚无码乱人伦一区二区 | 久激情内射婷内射蜜桃人妖 | 国产精品va在线播放 | 妺妺窝人体色www婷婷 | 国内精品九九久久久精品 | 亚洲成a人一区二区三区 | 伊人久久大香线蕉亚洲 | 人妻无码αv中文字幕久久琪琪布 | 色婷婷综合激情综在线播放 | 久久精品国产日本波多野结衣 | 国产婷婷色一区二区三区在线 | 两性色午夜免费视频 | 未满小14洗澡无码视频网站 | 在线 国产 欧美 亚洲 天堂 | 久久精品一区二区三区四区 | 无码中文字幕色专区 | 色综合久久久无码网中文 | yw尤物av无码国产在线观看 | 99久久精品午夜一区二区 | 中文字幕久久久久人妻 | 色老头在线一区二区三区 | 成人aaa片一区国产精品 | aa片在线观看视频在线播放 | 窝窝午夜理论片影院 | 国产三级久久久精品麻豆三级 | 狠狠亚洲超碰狼人久久 | 久久久久久亚洲精品a片成人 | 精品国产乱码久久久久乱码 | 亚洲综合在线一区二区三区 | 亚洲日韩av片在线观看 | 久久久精品欧美一区二区免费 | 人妻天天爽夜夜爽一区二区 | 牲欲强的熟妇农村老妇女 | 少妇人妻大乳在线视频 | 色五月丁香五月综合五月 | 亚洲国精产品一二二线 | 疯狂三人交性欧美 | 国产香蕉尹人视频在线 | 国产精品久久久午夜夜伦鲁鲁 | 牲交欧美兽交欧美 | 国产精品美女久久久久av爽李琼 | 国产无遮挡吃胸膜奶免费看 | 欧美喷潮久久久xxxxx | 久久综合香蕉国产蜜臀av | 国产xxx69麻豆国语对白 | 久久99精品国产.久久久久 | 无码人妻丰满熟妇区毛片18 | 老熟女重囗味hdxx69 | 久久久久人妻一区精品色欧美 | 欧美丰满熟妇xxxx性ppx人交 | 国产亚洲精品久久久ai换 | 在线精品亚洲一区二区 | 亚洲精品午夜无码电影网 | 无码av免费一区二区三区试看 | 精品久久8x国产免费观看 | 亚洲精品久久久久avwww潮水 | 亚洲a无码综合a国产av中文 | 日韩av无码中文无码电影 | 国产人妻精品午夜福利免费 | 日韩人妻无码一区二区三区久久99 | 欧美三级不卡在线观看 | 99精品无人区乱码1区2区3区 | 成人精品一区二区三区中文字幕 | 国产精品久久精品三级 | 久久综合色之久久综合 | 国产成人精品久久亚洲高清不卡 | 成人性做爰aaa片免费看不忠 | 欧美成人午夜精品久久久 | 丰满少妇人妻久久久久久 | 正在播放老肥熟妇露脸 | 国产人妻精品午夜福利免费 | 欧美人妻一区二区三区 | 久久 国产 尿 小便 嘘嘘 | 亚洲精品欧美二区三区中文字幕 | 18禁黄网站男男禁片免费观看 | 久久亚洲精品中文字幕无男同 | 亚洲精品无码国产 | 精品久久综合1区2区3区激情 | 成人片黄网站色大片免费观看 | 欧美自拍另类欧美综合图片区 | 久久精品视频在线看15 | 老司机亚洲精品影院无码 | 亚洲综合无码久久精品综合 | 性色欲网站人妻丰满中文久久不卡 | 熟女少妇人妻中文字幕 | 亚洲一区二区三区偷拍女厕 | 亚洲精品午夜无码电影网 | 欧美人与禽猛交狂配 | 久精品国产欧美亚洲色aⅴ大片 | 中文字幕无码日韩专区 | 中文字幕av伊人av无码av | 国产一区二区三区四区五区加勒比 | 婷婷色婷婷开心五月四房播播 | 思思久久99热只有频精品66 | 国产香蕉97碰碰久久人人 | 女人被爽到呻吟gif动态图视看 | 动漫av网站免费观看 | 青草青草久热国产精品 | 国产精品自产拍在线观看 | 人妻aⅴ无码一区二区三区 | 超碰97人人射妻 | 亚洲人成网站色7799 | 最近中文2019字幕第二页 | 久久精品中文闷骚内射 | 无遮挡国产高潮视频免费观看 | 中文字幕无码人妻少妇免费 | 色婷婷综合激情综在线播放 | 内射老妇bbwx0c0ck | 性开放的女人aaa片 | 国产精品igao视频网 | 丝袜 中出 制服 人妻 美腿 | 好爽又高潮了毛片免费下载 | 国产电影无码午夜在线播放 | 国产精品人人妻人人爽 | 久久久久成人精品免费播放动漫 | 3d动漫精品啪啪一区二区中 | 国产欧美精品一区二区三区 | 性色av无码免费一区二区三区 | 日本肉体xxxx裸交 | 欧美日韩在线亚洲综合国产人 | 99久久人妻精品免费一区 | 丰满少妇弄高潮了www | 亚洲一区二区三区香蕉 | 99久久人妻精品免费一区 | 亚洲高清偷拍一区二区三区 | 日本护士xxxxhd少妇 | 亚洲精品午夜无码电影网 | 人人爽人人澡人人高潮 | 人人妻人人澡人人爽欧美精品 | 一本久道久久综合狠狠爱 | 久久久久免费看成人影片 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 青青草原综合久久大伊人精品 | 18精品久久久无码午夜福利 | 亚欧洲精品在线视频免费观看 | 国产精品久久久久无码av色戒 | 日日摸日日碰夜夜爽av | www国产亚洲精品久久久日本 | 精品国产精品久久一区免费式 | 纯爱无遮挡h肉动漫在线播放 | 中文字幕av无码一区二区三区电影 | 色老头在线一区二区三区 | 国产熟女一区二区三区四区五区 | 国产精品丝袜黑色高跟鞋 | 给我免费的视频在线观看 | 色综合久久中文娱乐网 | 日本护士xxxxhd少妇 | 狠狠色欧美亚洲狠狠色www | 亚洲成熟女人毛毛耸耸多 | 天天拍夜夜添久久精品大 | 99riav国产精品视频 | 在线观看国产一区二区三区 | 国产乱人伦av在线无码 | 国产成人一区二区三区别 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲男女内射在线播放 | 在教室伦流澡到高潮hnp视频 | 中文字幕无码日韩专区 | 一二三四社区在线中文视频 | а√天堂www在线天堂小说 | 亚洲精品综合五月久久小说 | 色欲人妻aaaaaaa无码 | 任你躁在线精品免费 | 成人免费视频一区二区 | 麻豆av传媒蜜桃天美传媒 | 精品国产一区二区三区四区 | 国产精品亚洲专区无码不卡 | 疯狂三人交性欧美 | 国产两女互慰高潮视频在线观看 | 久久国产精品精品国产色婷婷 | 成人一区二区免费视频 | 亚洲国产精品一区二区美利坚 | 日韩精品无码免费一区二区三区 | 久久亚洲中文字幕无码 | 成人性做爰aaa片免费看不忠 | 国产亚洲精品久久久久久久 | 国产黄在线观看免费观看不卡 | 又大又硬又黄的免费视频 | 久久国语露脸国产精品电影 | 久久aⅴ免费观看 | 欧美日韩人成综合在线播放 | 国产精品久久久久久亚洲毛片 | 四虎国产精品免费久久 | 大肉大捧一进一出好爽视频 | 性欧美videos高清精品 | 未满成年国产在线观看 | 亚洲国产精品一区二区第一页 | 女人被男人躁得好爽免费视频 | 少妇一晚三次一区二区三区 | 亚洲乱码中文字幕在线 | 久久久国产精品无码免费专区 | 日韩欧美群交p片內射中文 | 在线成人www免费观看视频 | 成人性做爰aaa片免费看不忠 | 亚洲色欲久久久综合网东京热 | 成人精品天堂一区二区三区 | 久久综合给合久久狠狠狠97色 | 色偷偷人人澡人人爽人人模 | 精品国偷自产在线视频 | 国产肉丝袜在线观看 | 亚洲日韩av一区二区三区四区 | 波多野42部无码喷潮在线 | 牲交欧美兽交欧美 | 国产99久久精品一区二区 | 精品久久久无码人妻字幂 | 波多野结衣 黑人 | 夜夜影院未满十八勿进 | 国产一区二区三区四区五区加勒比 | 欧洲精品码一区二区三区免费看 | 精品国产国产综合精品 | 日日碰狠狠丁香久燥 | av小次郎收藏 | 欧美老妇与禽交 | 国产农村妇女高潮大叫 | 亚洲色偷偷偷综合网 | 久久久久99精品国产片 | 黄网在线观看免费网站 | 奇米影视7777久久精品人人爽 | 亚洲色在线无码国产精品不卡 | 久久综合色之久久综合 | 夜精品a片一区二区三区无码白浆 | 国产肉丝袜在线观看 | 丰满人妻精品国产99aⅴ | 欧美老人巨大xxxx做受 | 国产婷婷色一区二区三区在线 | 久久久久亚洲精品中文字幕 | 亚洲国产欧美日韩精品一区二区三区 | 久久精品国产一区二区三区肥胖 | 精品国产麻豆免费人成网站 | 久久99精品国产麻豆 | 国产九九九九九九九a片 | 暴力强奷在线播放无码 | 亚洲熟女一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 亚洲成av人综合在线观看 | 东京一本一道一二三区 | 国产成人一区二区三区在线观看 | 亚洲综合伊人久久大杳蕉 | 日韩在线不卡免费视频一区 | 国产无遮挡又黄又爽又色 | 少妇无套内谢久久久久 | 亚洲国产欧美日韩精品一区二区三区 | 一区二区三区乱码在线 | 欧洲 | 无码精品人妻一区二区三区av | 国产高潮视频在线观看 | 水蜜桃亚洲一二三四在线 | 久久天天躁狠狠躁夜夜免费观看 | 男人的天堂av网站 | 国产美女极度色诱视频www | 日产精品99久久久久久 | 高清国产亚洲精品自在久久 | 日本一本二本三区免费 | 久久zyz资源站无码中文动漫 | 亚洲aⅴ无码成人网站国产app | 4hu四虎永久在线观看 | 55夜色66夜色国产精品视频 | 香蕉久久久久久av成人 | 亚洲国产成人a精品不卡在线 | 国产农村乱对白刺激视频 | 国产成人精品久久亚洲高清不卡 | 国产av无码专区亚洲a∨毛片 | 欧美日本精品一区二区三区 | 天天摸天天透天天添 | 亚洲啪av永久无码精品放毛片 | 国产成人亚洲综合无码 | 一本大道久久东京热无码av | 国产9 9在线 | 中文 | 少妇的肉体aa片免费 | 300部国产真实乱 | 玩弄人妻少妇500系列视频 | 成在人线av无码免费 | 成人亚洲精品久久久久软件 | 国产人妻精品一区二区三区 | 日韩人妻系列无码专区 | 亚洲小说图区综合在线 | 日本高清一区免费中文视频 | 亚洲毛片av日韩av无码 | 国产又粗又硬又大爽黄老大爷视 | 亚洲国产av精品一区二区蜜芽 | 人人妻人人澡人人爽欧美一区九九 | 久久精品中文闷骚内射 | 国产高潮视频在线观看 | 亚洲一区二区三区在线观看网站 | 色情久久久av熟女人妻网站 | 国语自产偷拍精品视频偷 | 永久免费观看美女裸体的网站 | 日日天干夜夜狠狠爱 | 亚洲七七久久桃花影院 | 欧美黑人性暴力猛交喷水 | 人妻互换免费中文字幕 | 亚洲区小说区激情区图片区 | 欧美国产亚洲日韩在线二区 | 一本久久a久久精品亚洲 | 日韩成人一区二区三区在线观看 | 强开小婷嫩苞又嫩又紧视频 | 亚洲精品中文字幕 | 乱人伦中文视频在线观看 | 伊人久久大香线蕉av一区二区 | 国内精品人妻无码久久久影院 | 亚洲色成人中文字幕网站 | a片免费视频在线观看 | 中文字幕无码免费久久9一区9 | 亚洲人成影院在线无码按摩店 | 欧美精品免费观看二区 | 亚洲精品一区二区三区婷婷月 | 免费人成在线视频无码 | 亚洲色无码一区二区三区 | 黄网在线观看免费网站 | 亚洲成av人影院在线观看 | 亚洲人成影院在线观看 | 成人无码精品1区2区3区免费看 | 国产在热线精品视频 | 欧美三级a做爰在线观看 | 少妇无码av无码专区在线观看 | 国产成人精品三级麻豆 | 午夜无码区在线观看 | 全黄性性激高免费视频 | 青草视频在线播放 | 精品国产av色一区二区深夜久久 | 欧美高清在线精品一区 | 成人亚洲精品久久久久 | 精品 日韩 国产 欧美 视频 | 亚洲无人区一区二区三区 | 国产女主播喷水视频在线观看 | 国产真实伦对白全集 | 亚洲日韩精品欧美一区二区 | 欧美第一黄网免费网站 | 丰满人妻被黑人猛烈进入 | 久9re热视频这里只有精品 | 狂野欧美激情性xxxx | 亚洲伊人久久精品影院 | 久久精品国产99久久6动漫 | 亚洲一区二区三区四区 | 午夜肉伦伦影院 | 中文字幕久久久久人妻 | 久久99国产综合精品 | 国产精品久久久一区二区三区 | 欧美人与禽猛交狂配 | 女人高潮内射99精品 | 精品乱子伦一区二区三区 | 伊人色综合久久天天小片 | 亚洲综合伊人久久大杳蕉 | 丰满人妻精品国产99aⅴ | 国产熟妇高潮叫床视频播放 | 免费无码肉片在线观看 | 久久99精品久久久久久 | 久久精品国产一区二区三区肥胖 | 少女韩国电视剧在线观看完整 | 精品国偷自产在线视频 | 国产精品99爱免费视频 | 国产乱码精品一品二品 | 人妻有码中文字幕在线 | 国产乡下妇女做爰 | 九九久久精品国产免费看小说 | 国产亚洲精品久久久久久久久动漫 | 中文字幕av日韩精品一区二区 | 中文精品久久久久人妻不卡 | 精品成人av一区二区三区 | 无码任你躁久久久久久久 | 国产精品无码久久av | 高清不卡一区二区三区 | 久久天天躁夜夜躁狠狠 | 熟女少妇人妻中文字幕 | 亚洲 a v无 码免 费 成 人 a v | 国产亚洲精品久久久久久国模美 | 强开小婷嫩苞又嫩又紧视频 | 国产香蕉尹人综合在线观看 | 国产一区二区三区日韩精品 | 久久久久久久女国产乱让韩 | 自拍偷自拍亚洲精品10p | 在教室伦流澡到高潮hnp视频 | 久久综合九色综合97网 | 国产色精品久久人妻 | 人妻与老人中文字幕 | 久久精品中文字幕大胸 | 亚洲欧洲日本无在线码 | 亚洲国产av美女网站 | 麻豆国产人妻欲求不满谁演的 | 久久久久亚洲精品男人的天堂 | 精品国产精品久久一区免费式 | 国产 浪潮av性色四虎 | 亚洲色欲久久久综合网东京热 | 亚洲区欧美区综合区自拍区 | av在线亚洲欧洲日产一区二区 | 自拍偷自拍亚洲精品10p | 狠狠综合久久久久综合网 | 日本欧美一区二区三区乱码 | 日本免费一区二区三区最新 | 亚洲人成网站在线播放942 | 免费网站看v片在线18禁无码 | 亚洲精品国产a久久久久久 | 久久精品女人的天堂av | 国产亚洲精品久久久久久久 | 老司机亚洲精品影院 | 亚洲大尺度无码无码专区 | 牲交欧美兽交欧美 | 午夜无码人妻av大片色欲 | 国产精品久久久av久久久 | 日日摸天天摸爽爽狠狠97 | 波多野结衣aⅴ在线 | 沈阳熟女露脸对白视频 | 内射老妇bbwx0c0ck | 国产av剧情md精品麻豆 | 欧美一区二区三区视频在线观看 | 精品无码国产一区二区三区av | 内射老妇bbwx0c0ck | 亚洲欧美精品伊人久久 | 美女黄网站人色视频免费国产 | 无遮无挡爽爽免费视频 | 亚洲精品一区二区三区婷婷月 | 亚洲一区二区三区国产精华液 | 久久99热只有频精品8 | 少妇无码一区二区二三区 | 国产性生大片免费观看性 | 欧美一区二区三区视频在线观看 | 蜜桃视频韩日免费播放 | 精品无码av一区二区三区 | 亚洲色欲色欲欲www在线 | 亚洲日韩一区二区 | 福利一区二区三区视频在线观看 | 国产va免费精品观看 | 伊人久久婷婷五月综合97色 | 荫蒂添的好舒服视频囗交 | 久久综合给合久久狠狠狠97色 | 亚洲一区av无码专区在线观看 | 黑人大群体交免费视频 | 午夜福利不卡在线视频 | 夜夜影院未满十八勿进 | 欧美性生交xxxxx久久久 | 中文字幕+乱码+中文字幕一区 | 鲁鲁鲁爽爽爽在线视频观看 | 美女黄网站人色视频免费国产 | 人妻aⅴ无码一区二区三区 | 欧美一区二区三区视频在线观看 | 国产内射老熟女aaaa | 久久99精品国产麻豆蜜芽 | 六月丁香婷婷色狠狠久久 | 国产精品怡红院永久免费 | 天天做天天爱天天爽综合网 | 老子影院午夜精品无码 | 在线а√天堂中文官网 | 中文字幕日产无线码一区 | 亚洲经典千人经典日产 | 成人精品视频一区二区三区尤物 | 久久综合久久自在自线精品自 | 青草视频在线播放 | 精品国精品国产自在久国产87 | 久久久精品456亚洲影院 | 99久久亚洲精品无码毛片 | 97人妻精品一区二区三区 | 精品无码成人片一区二区98 | 女人和拘做爰正片视频 | 在线天堂新版最新版在线8 | 亚洲精品一区二区三区四区五区 | 在线播放无码字幕亚洲 | 国产成人无码av在线影院 | 性开放的女人aaa片 | 成年美女黄网站色大免费全看 | 亚洲 激情 小说 另类 欧美 | 久久亚洲国产成人精品性色 | 人人妻人人澡人人爽人人精品浪潮 | 日日摸天天摸爽爽狠狠97 | 亚洲熟妇色xxxxx欧美老妇y | 成人免费无码大片a毛片 | 蜜桃av抽搐高潮一区二区 | 麻豆精品国产精华精华液好用吗 | 国产黑色丝袜在线播放 | 国产小呦泬泬99精品 | 国产口爆吞精在线视频 | 无码中文字幕色专区 | 国内少妇偷人精品视频 | 熟妇人妻无码xxx视频 | 99久久精品国产一区二区蜜芽 | 欧美性猛交xxxx富婆 | 国产精品第一国产精品 | 97无码免费人妻超级碰碰夜夜 | 无码乱肉视频免费大全合集 | 夜夜高潮次次欢爽av女 | 精品国产青草久久久久福利 | 婷婷丁香五月天综合东京热 | 四虎国产精品一区二区 | av无码电影一区二区三区 | 国产成人久久精品流白浆 | 国产手机在线αⅴ片无码观看 | 又黄又爽又色的视频 | 欧美猛少妇色xxxxx | 最近免费中文字幕中文高清百度 | 色五月五月丁香亚洲综合网 | 国产激情精品一区二区三区 | 人妻人人添人妻人人爱 | 妺妺窝人体色www在线小说 | 日日天干夜夜狠狠爱 | 国内精品一区二区三区不卡 | 亚洲色无码一区二区三区 | 无遮挡国产高潮视频免费观看 | 国产av人人夜夜澡人人爽麻豆 | 曰韩少妇内射免费播放 | 欧美成人午夜精品久久久 | 久在线观看福利视频 | 国产精品无码一区二区桃花视频 | 青青青手机频在线观看 | 欧洲美熟女乱又伦 | 精品少妇爆乳无码av无码专区 | 成人欧美一区二区三区 | 日本精品人妻无码77777 天堂一区人妻无码 | 精品久久综合1区2区3区激情 | 亚洲人成人无码网www国产 | 99视频精品全部免费免费观看 | 麻豆精品国产精华精华液好用吗 | 国产69精品久久久久app下载 | 麻豆果冻传媒2021精品传媒一区下载 | 午夜精品久久久久久久久 | 巨爆乳无码视频在线观看 | 女人被爽到呻吟gif动态图视看 | 日本乱偷人妻中文字幕 | 日本一卡二卡不卡视频查询 | 牛和人交xxxx欧美 | 欧美成人午夜精品久久久 | 亚洲aⅴ无码成人网站国产app | 内射后入在线观看一区 | 妺妺窝人体色www在线小说 | 国产一区二区三区精品视频 | 国产精品无码一区二区三区不卡 | 欧美熟妇另类久久久久久多毛 | 性欧美熟妇videofreesex | 国产97人人超碰caoprom | 国产日产欧产精品精品app | 樱花草在线社区www | 午夜精品一区二区三区在线观看 | 亚洲综合精品香蕉久久网 | 又大又黄又粗又爽的免费视频 | 亚洲s码欧洲m码国产av | 久久久久亚洲精品男人的天堂 | 性啪啪chinese东北女人 | 欧美丰满熟妇xxxx性ppx人交 | 性做久久久久久久免费看 | 熟妇人妻激情偷爽文 | 日本精品少妇一区二区三区 | 高清不卡一区二区三区 | 久久五月精品中文字幕 | 欧美午夜特黄aaaaaa片 | 中文字幕无码人妻少妇免费 | 亚洲男人av香蕉爽爽爽爽 | 好屌草这里只有精品 | 久久人人爽人人爽人人片av高清 | 999久久久国产精品消防器材 | 香港三级日本三级妇三级 | 亚拍精品一区二区三区探花 | 国语自产偷拍精品视频偷 | 精品人妻中文字幕有码在线 | 国产亚洲美女精品久久久2020 | 国内精品一区二区三区不卡 | 亚洲成a人片在线观看无码 | 激情人妻另类人妻伦 | 噜噜噜亚洲色成人网站 | 久久久久免费看成人影片 | 日韩精品无码一区二区中文字幕 | 国产成人无码区免费内射一片色欲 | 老太婆性杂交欧美肥老太 | 一本久久a久久精品亚洲 | 性啪啪chinese东北女人 | 麻豆国产丝袜白领秘书在线观看 | 欧美肥老太牲交大战 | 精品无码一区二区三区的天堂 | 亚洲成av人综合在线观看 | 四虎影视成人永久免费观看视频 | 国产精品久久久久久久9999 | 日韩精品久久久肉伦网站 | 国产97色在线 | 免 | 欧美精品无码一区二区三区 | 中文字幕无码日韩欧毛 | 国产99久久精品一区二区 | 中文字幕 亚洲精品 第1页 | 老司机亚洲精品影院 | 国产精品久久久久久亚洲毛片 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国内精品人妻无码久久久影院 | 蜜臀av在线播放 久久综合激激的五月天 | 女人被爽到呻吟gif动态图视看 | 精品水蜜桃久久久久久久 | 亚洲精品一区二区三区大桥未久 | 国产麻豆精品一区二区三区v视界 | 亚洲国产精华液网站w | 欧美日韩视频无码一区二区三 | 国产精品嫩草久久久久 | 熟妇人妻无码xxx视频 | 又粗又大又硬又长又爽 | 天堂在线观看www | 麻豆国产97在线 | 欧洲 | 国产舌乚八伦偷品w中 | 久久久婷婷五月亚洲97号色 | 白嫩日本少妇做爰 | 中文字幕人妻无码一夲道 | 熟妇人妻无码xxx视频 | 波多野结衣av一区二区全免费观看 | 白嫩日本少妇做爰 | 人人妻人人澡人人爽人人精品 | 欧美大屁股xxxxhd黑色 | 久久国内精品自在自线 | 国产精品人人妻人人爽 | 欧洲熟妇色 欧美 | 永久免费观看国产裸体美女 | 日本成熟视频免费视频 | 国产人妻人伦精品1国产丝袜 | av香港经典三级级 在线 | a片免费视频在线观看 | 亚洲国产欧美国产综合一区 | 欧洲熟妇精品视频 | 澳门永久av免费网站 | 久久亚洲精品成人无码 | 日韩成人一区二区三区在线观看 | 中文字幕无线码 | 日韩精品乱码av一区二区 | 欧美国产日韩亚洲中文 | 亚洲精品美女久久久久久久 | 国产成人一区二区三区别 | 日本成熟视频免费视频 | 极品嫩模高潮叫床 | 亚洲成av人片在线观看无码不卡 | 亚洲精品国偷拍自产在线观看蜜桃 | а√天堂www在线天堂小说 | 欧美激情内射喷水高潮 | 国产精品99爱免费视频 | 无码国模国产在线观看 | 色欲人妻aaaaaaa无码 | 久久精品人人做人人综合 | 久久www免费人成人片 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 最新国产乱人伦偷精品免费网站 | 九九在线中文字幕无码 | 特黄特色大片免费播放器图片 | 精品久久久中文字幕人妻 | 熟妇人妻中文av无码 | 一本一道久久综合久久 | 偷窥日本少妇撒尿chinese | 久久成人a毛片免费观看网站 | 国产精品久久久久久无码 | 亚洲精品欧美二区三区中文字幕 | 久久亚洲a片com人成 | 永久黄网站色视频免费直播 | 丰满妇女强制高潮18xxxx | 女高中生第一次破苞av | 丰满人妻精品国产99aⅴ | 久久人人爽人人爽人人片ⅴ | 国产成人精品三级麻豆 | 水蜜桃色314在线观看 | 精品国产麻豆免费人成网站 | 2020久久超碰国产精品最新 | 亚洲国产精品毛片av不卡在线 | 亚洲欧美日韩国产精品一区二区 | 国产凸凹视频一区二区 | 国产莉萝无码av在线播放 | 精品国产乱码久久久久乱码 | 精品成在人线av无码免费看 | v一区无码内射国产 | 国产成人精品视频ⅴa片软件竹菊 | 午夜福利一区二区三区在线观看 | 中文字幕av日韩精品一区二区 | 欧美成人高清在线播放 | 天海翼激烈高潮到腰振不止 | 亚洲乱码日产精品bd | 偷窥日本少妇撒尿chinese | 国产卡一卡二卡三 | 欧美人与动性行为视频 | 国产亚洲人成在线播放 | 亚洲国产成人av在线观看 | 国产一区二区三区四区五区加勒比 | 国产精品美女久久久久av爽李琼 | 中文字幕日韩精品一区二区三区 | 久久 国产 尿 小便 嘘嘘 | 亚洲人交乣女bbw | 狠狠色色综合网站 | 国产精品人人爽人人做我的可爱 | 国产精品亚洲а∨无码播放麻豆 | 日本成熟视频免费视频 | 亚洲精品久久久久avwww潮水 | 国产在线aaa片一区二区99 | 四虎国产精品一区二区 | 麻豆果冻传媒2021精品传媒一区下载 | 亚洲 日韩 欧美 成人 在线观看 | 97资源共享在线视频 | 波多野结衣av一区二区全免费观看 | 国产成人亚洲综合无码 | 俺去俺来也在线www色官网 | 无码吃奶揉捏奶头高潮视频 | 久久伊人色av天堂九九小黄鸭 | 老熟女重囗味hdxx69 | 欧美国产日产一区二区 | yw尤物av无码国产在线观看 | 精品无人区无码乱码毛片国产 | 日韩欧美成人免费观看 | 亚洲高清偷拍一区二区三区 | 美女极度色诱视频国产 | 欧美黑人性暴力猛交喷水 | 丝袜人妻一区二区三区 | 熟女少妇人妻中文字幕 | 麻豆人妻少妇精品无码专区 | 日本熟妇大屁股人妻 | 99久久精品国产一区二区蜜芽 | 人妻无码久久精品人妻 | 国产精品无码一区二区桃花视频 | 伊人久久大香线焦av综合影院 | 强伦人妻一区二区三区视频18 | 欧美人与禽zoz0性伦交 | 日韩av激情在线观看 | 国产一区二区不卡老阿姨 | 国产欧美亚洲精品a | 国产成人久久精品流白浆 | 午夜免费福利小电影 | 人人澡人人妻人人爽人人蜜桃 | 中文字幕人成乱码熟女app | 日本一卡2卡3卡四卡精品网站 | 国产一区二区三区精品视频 | 撕开奶罩揉吮奶头视频 | 理论片87福利理论电影 | 狠狠综合久久久久综合网 | 高潮毛片无遮挡高清免费 | 牲交欧美兽交欧美 | 免费无码午夜福利片69 | 人人爽人人爽人人片av亚洲 | 成人亚洲精品久久久久软件 | 偷窥日本少妇撒尿chinese | 久久久无码中文字幕久... | 亚洲色偷偷男人的天堂 | 麻豆国产97在线 | 欧洲 | 激情国产av做激情国产爱 | 国产欧美亚洲精品a | 国产超碰人人爽人人做人人添 | 4hu四虎永久在线观看 | 狠狠色噜噜狠狠狠7777奇米 | аⅴ资源天堂资源库在线 | 精品欧洲av无码一区二区三区 | 国产熟妇高潮叫床视频播放 | 熟妇人妻无码xxx视频 | 成人欧美一区二区三区黑人免费 | 亚洲 激情 小说 另类 欧美 | 久久天天躁狠狠躁夜夜免费观看 | 成人亚洲精品久久久久软件 | 麻豆人妻少妇精品无码专区 | 亚洲中文字幕乱码av波多ji | 国产人成高清在线视频99最全资源 | 亚洲中文字幕成人无码 | 精品人妻中文字幕有码在线 | 十八禁视频网站在线观看 | 亚无码乱人伦一区二区 | av在线亚洲欧洲日产一区二区 | 一本久道久久综合婷婷五月 | 国产精品毛多多水多 | 人妻插b视频一区二区三区 | 亚洲经典千人经典日产 | 国产无遮挡吃胸膜奶免费看 | 国产偷国产偷精品高清尤物 | 少妇高潮一区二区三区99 | 亚洲日韩中文字幕在线播放 | 国内揄拍国内精品人妻 | 中文字幕av无码一区二区三区电影 | 女人高潮内射99精品 | 日韩无码专区 | 午夜成人1000部免费视频 | 国产明星裸体无码xxxx视频 | 亚洲精品www久久久 | 国产亚洲日韩欧美另类第八页 | 免费无码一区二区三区蜜桃大 | 奇米影视7777久久精品人人爽 | 日韩 欧美 动漫 国产 制服 | 国内老熟妇对白xxxxhd | 极品尤物被啪到呻吟喷水 | 又紧又大又爽精品一区二区 | 久久亚洲精品成人无码 | 激情综合激情五月俺也去 | 婷婷色婷婷开心五月四房播播 | 最近的中文字幕在线看视频 | 日本饥渴人妻欲求不满 | 老熟妇仑乱视频一区二区 | 国产在线无码精品电影网 | 亚洲日韩乱码中文无码蜜桃臀网站 | 红桃av一区二区三区在线无码av | 中文字幕无码免费久久9一区9 | 熟妇女人妻丰满少妇中文字幕 | 亚洲精品国产第一综合99久久 | 人人爽人人澡人人人妻 | 女人被男人爽到呻吟的视频 | 国产精品无码永久免费888 | 99久久婷婷国产综合精品青草免费 | 精品无人区无码乱码毛片国产 | 亚洲国产精品无码一区二区三区 | 国产精品爱久久久久久久 | 中文字幕日产无线码一区 | 亚洲成色在线综合网站 | 国产亚洲视频中文字幕97精品 | 久久精品99久久香蕉国产色戒 | 色诱久久久久综合网ywww | 国产精品免费大片 | 国产亲子乱弄免费视频 | 婷婷五月综合缴情在线视频 | 久久精品女人天堂av免费观看 | 国产亚洲欧美日韩亚洲中文色 | 99精品视频在线观看免费 | 欧美激情综合亚洲一二区 | 夜先锋av资源网站 | 一个人看的视频www在线 | 伊在人天堂亚洲香蕉精品区 | 久久久久久久女国产乱让韩 | 国产精品-区区久久久狼 | 欧美日韩色另类综合 | 亚洲精品国产精品乱码视色 | 精品乱码久久久久久久 | 国产熟妇高潮叫床视频播放 | 国产偷国产偷精品高清尤物 | 国产肉丝袜在线观看 | 亚洲国产精华液网站w | 曰韩无码二三区中文字幕 | 女人高潮内射99精品 | 中文字幕乱妇无码av在线 | 熟妇人妻无码xxx视频 | 精品国产国产综合精品 | 伊人久久大香线蕉av一区二区 | 风流少妇按摩来高潮 | 免费看男女做好爽好硬视频 | 又大又黄又粗又爽的免费视频 | 久久97精品久久久久久久不卡 | 亚洲午夜福利在线观看 | 午夜免费福利小电影 | 男女下面进入的视频免费午夜 | 亚洲国产精品毛片av不卡在线 | 精品国产国产综合精品 | www国产亚洲精品久久久日本 | 麻豆人妻少妇精品无码专区 | 久久久久99精品国产片 | 久久久婷婷五月亚洲97号色 | 免费观看又污又黄的网站 | 欧美国产日产一区二区 | 亚洲精品一区二区三区在线观看 | 性生交大片免费看女人按摩摩 | 人妻无码αv中文字幕久久琪琪布 | 少妇高潮喷潮久久久影院 | 亚洲色在线无码国产精品不卡 | 色婷婷欧美在线播放内射 | 国产激情精品一区二区三区 | 丰满人妻被黑人猛烈进入 | 成人无码精品1区2区3区免费看 | 亚洲国产欧美在线成人 | 人妻少妇被猛烈进入中文字幕 | 天堂一区人妻无码 | 久在线观看福利视频 | 成人性做爰aaa片免费看 | 国产区女主播在线观看 | 国产电影无码午夜在线播放 | 欧美精品免费观看二区 | 欧美性生交xxxxx久久久 | 亚洲中文字幕在线无码一区二区 | 成人免费视频一区二区 | 久久亚洲日韩精品一区二区三区 | 国产成人无码区免费内射一片色欲 | 少妇无码av无码专区在线观看 | 男人和女人高潮免费网站 | 2019nv天堂香蕉在线观看 | 国产超碰人人爽人人做人人添 | 7777奇米四色成人眼影 | 精品欧洲av无码一区二区三区 | 久久视频在线观看精品 | 高潮毛片无遮挡高清免费 | 亚拍精品一区二区三区探花 | 久久久中文字幕日本无吗 | 狂野欧美性猛xxxx乱大交 | 亚洲性无码av中文字幕 | 久久精品国产一区二区三区肥胖 | 国产精品久久久久久亚洲影视内衣 | 图片区 小说区 区 亚洲五月 | 国产农村妇女高潮大叫 | 少女韩国电视剧在线观看完整 | 国产精品嫩草久久久久 | 人人超人人超碰超国产 | 精品夜夜澡人妻无码av蜜桃 | 欧美阿v高清资源不卡在线播放 | 国产精品资源一区二区 | a在线观看免费网站大全 | 色老头在线一区二区三区 | 日日麻批免费40分钟无码 | 国产偷国产偷精品高清尤物 | 亚洲 激情 小说 另类 欧美 | 性欧美熟妇videofreesex | 综合网日日天干夜夜久久 | 中文字幕无线码免费人妻 | 国产精品美女久久久网av | 亚洲乱码中文字幕在线 | 久久国产自偷自偷免费一区调 | 青春草在线视频免费观看 | 亚洲精品一区二区三区在线 | 国产内射爽爽大片视频社区在线 | 熟女少妇在线视频播放 | 亚洲国产精品美女久久久久 | 乱中年女人伦av三区 | 2019nv天堂香蕉在线观看 | 国产精品亚洲专区无码不卡 | 国产午夜亚洲精品不卡下载 | 乱人伦人妻中文字幕无码 | 97精品人妻一区二区三区香蕉 | 国产真人无遮挡作爱免费视频 | 东京热无码av男人的天堂 | 国产 浪潮av性色四虎 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 1000部啪啪未满十八勿入下载 | 国产亚洲人成在线播放 | 国产成人午夜福利在线播放 | 宝宝好涨水快流出来免费视频 | 亚洲狠狠婷婷综合久久 | 国产亚洲精品久久久闺蜜 | 无人区乱码一区二区三区 | 激情爆乳一区二区三区 | 大地资源网第二页免费观看 | 国产一区二区三区精品视频 | 亚洲精品鲁一鲁一区二区三区 | 欧美xxxx黑人又粗又长 | 亚洲精品国产a久久久久久 | 国产精品美女久久久久av爽李琼 | 亚洲精品成人福利网站 | 国产农村妇女高潮大叫 | 日本一区二区三区免费高清 | 蜜桃视频插满18在线观看 | 欧美老妇交乱视频在线观看 | 国产无遮挡吃胸膜奶免费看 | 一区二区三区高清视频一 | 色综合久久久无码网中文 | 捆绑白丝粉色jk震动捧喷白浆 | 精品一区二区三区波多野结衣 | 激情综合激情五月俺也去 | 亚洲一区av无码专区在线观看 | 国产婷婷色一区二区三区在线 | 西西人体www44rt大胆高清 | 真人与拘做受免费视频 | 亚洲人成网站免费播放 | 少妇性俱乐部纵欲狂欢电影 | 亚洲の无码国产の无码步美 | 精品国产乱码久久久久乱码 | 亚洲中文字幕久久无码 | 国产三级精品三级男人的天堂 | 欧洲欧美人成视频在线 | 国产在线精品一区二区三区直播 | 亚洲成av人片在线观看无码不卡 | 亚洲综合在线一区二区三区 | 国产综合色产在线精品 | 人妻天天爽夜夜爽一区二区 | 男人的天堂av网站 | 国产精品手机免费 | 色综合久久88色综合天天 | 中文字幕av日韩精品一区二区 | 精品国精品国产自在久国产87 | 东京热无码av男人的天堂 | 在线亚洲高清揄拍自拍一品区 | 免费无码肉片在线观看 | 久久伊人色av天堂九九小黄鸭 | 亚洲第一网站男人都懂 | 国产热a欧美热a在线视频 | 国产av一区二区精品久久凹凸 | 无码人妻av免费一区二区三区 | 精品 日韩 国产 欧美 视频 | 亚洲精品一区二区三区大桥未久 | 久久国产精品萌白酱免费 | 国产成人av免费观看 | 国产无遮挡又黄又爽免费视频 | 亚洲人成网站色7799 | 精品国偷自产在线视频 | 亚洲精品午夜国产va久久成人 | 天堂一区人妻无码 | 亚洲s码欧洲m码国产av | 亚洲a无码综合a国产av中文 | 精品亚洲韩国一区二区三区 | 西西人体www44rt大胆高清 | 国产真人无遮挡作爱免费视频 | 亚洲精品国偷拍自产在线麻豆 | 曰韩无码二三区中文字幕 | 国产特级毛片aaaaaaa高清 | 国内精品久久久久久中文字幕 | 中文字幕人妻无码一区二区三区 | 久久久久久久人妻无码中文字幕爆 | 亚洲精品久久久久中文第一幕 | 国产精品久久久久无码av色戒 | 一本久久a久久精品vr综合 | 久久精品国产亚洲精品 | 色老头在线一区二区三区 | 国产精品人人爽人人做我的可爱 | 国产人妻精品午夜福利免费 | 欧洲美熟女乱又伦 | 丰满肥臀大屁股熟妇激情视频 | 亚洲欧美日韩国产精品一区二区 | 一个人看的视频www在线 | 丰满妇女强制高潮18xxxx | 无套内谢的新婚少妇国语播放 | 中文字幕无线码免费人妻 | 青草视频在线播放 | 丰满人妻被黑人猛烈进入 | 久久综合激激的五月天 | 男人扒开女人内裤强吻桶进去 | 欧洲熟妇色 欧美 | 精品人人妻人人澡人人爽人人 | 国产无遮挡吃胸膜奶免费看 | 爆乳一区二区三区无码 | 少妇性l交大片欧洲热妇乱xxx | 国产精品无码久久av | 日韩在线不卡免费视频一区 | 亚洲精品久久久久久一区二区 | 国产va免费精品观看 | 国产成人无码av一区二区 | 欧美丰满熟妇xxxx | 国产偷国产偷精品高清尤物 | 亚洲国产成人a精品不卡在线 | 国产麻豆精品精东影业av网站 | 国产精品久免费的黄网站 | 51国偷自产一区二区三区 | 亚洲乱亚洲乱妇50p | 3d动漫精品啪啪一区二区中 | 欧美性猛交xxxx富婆 | 精品国产成人一区二区三区 | 欧美激情一区二区三区成人 | 色偷偷人人澡人人爽人人模 | 性做久久久久久久久 | 国产亚洲日韩欧美另类第八页 | 色综合视频一区二区三区 | 精品国偷自产在线 | 国产精品久久久av久久久 | 强奷人妻日本中文字幕 | 无码国内精品人妻少妇 | 人妻少妇精品无码专区动漫 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产精品久久久久9999小说 | 成人无码视频免费播放 | 亚洲の无码国产の无码步美 | 国产亚洲精品久久久久久 | 国产日产欧产精品精品app | 亚洲国产一区二区三区在线观看 | 国产成人无码一二三区视频 | 久久精品女人天堂av免费观看 | 欧美性生交xxxxx久久久 | 丝袜足控一区二区三区 | 久久久久成人片免费观看蜜芽 | 国产精品爱久久久久久久 | 成人免费无码大片a毛片 | 久久无码中文字幕免费影院蜜桃 | 国产乱人伦偷精品视频 | 一本大道伊人av久久综合 | 久久久婷婷五月亚洲97号色 | 久久天天躁狠狠躁夜夜免费观看 | 国产九九九九九九九a片 | √8天堂资源地址中文在线 | ass日本丰满熟妇pics | 高清无码午夜福利视频 | 国产精品久久久久久无码 | 九九热爱视频精品 | 亚洲国产精品久久久天堂 | 精品一二三区久久aaa片 | 377p欧洲日本亚洲大胆 | 黑人粗大猛烈进出高潮视频 | 天下第一社区视频www日本 | 国产成人亚洲综合无码 | 中文字幕无线码 | 永久黄网站色视频免费直播 | 性生交大片免费看女人按摩摩 | 日韩精品a片一区二区三区妖精 | 娇妻被黑人粗大高潮白浆 | 日韩成人一区二区三区在线观看 | 亚洲精品中文字幕乱码 | 久久国产精品精品国产色婷婷 | 成人无码影片精品久久久 | 无码免费一区二区三区 | 无码人妻出轨黑人中文字幕 | 日欧一片内射va在线影院 | 国产口爆吞精在线视频 | 日韩人妻少妇一区二区三区 | 精品一区二区三区无码免费视频 | 久久五月精品中文字幕 | 国产97色在线 | 免 | 亚洲成av人在线观看网址 | 中文字幕无码av波多野吉衣 | 久久久亚洲欧洲日产国码αv | 国产激情无码一区二区 | 国产亚洲日韩欧美另类第八页 | 国产国产精品人在线视 | 国产片av国语在线观看 | 久久久久av无码免费网 | 欧美人妻一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 一本加勒比波多野结衣 | 亚洲国产成人av在线观看 | 青青久在线视频免费观看 | 国产av一区二区三区最新精品 | 久久无码中文字幕免费影院蜜桃 | 1000部啪啪未满十八勿入下载 | 亚洲综合色区中文字幕 | 欧美 亚洲 国产 另类 | 亚洲成a人片在线观看无码3d | 永久免费观看国产裸体美女 | 熟女体下毛毛黑森林 | 国内精品人妻无码久久久影院 | 无码av最新清无码专区吞精 | 日韩欧美成人免费观看 | 久久亚洲a片com人成 | 97久久国产亚洲精品超碰热 | 色诱久久久久综合网ywww | 水蜜桃亚洲一二三四在线 | 亚洲国产av精品一区二区蜜芽 | 99视频精品全部免费免费观看 | 色婷婷香蕉在线一区二区 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产免费无码一区二区视频 | 精品水蜜桃久久久久久久 | 精品国产一区二区三区四区 | 欧美日韩一区二区综合 | 久久久久亚洲精品中文字幕 | 国产手机在线αⅴ片无码观看 | 久久久久成人精品免费播放动漫 | 少妇性l交大片欧洲热妇乱xxx | 亚洲欧洲中文日韩av乱码 | 日韩欧美群交p片內射中文 | 99久久精品午夜一区二区 | 国产性生交xxxxx无码 | 欧美性生交xxxxx久久久 | 女人被男人爽到呻吟的视频 | 亚洲欧美日韩成人高清在线一区 | 国产精品无套呻吟在线 | 日韩欧美中文字幕公布 | 日本丰满护士爆乳xxxx | 亚洲一区二区三区国产精华液 | 日本精品高清一区二区 | 人妻人人添人妻人人爱 | 欧美丰满少妇xxxx性 | 亚洲综合伊人久久大杳蕉 | 日本成熟视频免费视频 | 免费人成网站视频在线观看 | 初尝人妻少妇中文字幕 | 亚洲乱码中文字幕在线 | 日日躁夜夜躁狠狠躁 | 无码人妻丰满熟妇区毛片18 | 无人区乱码一区二区三区 |