精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

文件讀寫操作與常用技巧分享,你學會了嗎?

開發 前端
Java 中通常的 File 并不代表一個真實存在的文件對象,當你通過指定一個路徑描時,它就會返回一個代表這個路徑相關聯的一個虛擬對象,這個可能是一個真實存在的文件或者是一個包含多個文件的目錄。

一、摘要

在之前的文章中,我們了解到在 Java I/O 體系中,File 類是唯一代表磁盤文件本身的對象。

File 類定義了一些與平臺無關的方法來操作文件,包括檢查一個文件是否存在、創建、刪除文件、重命名文件、判斷文件的讀寫權限是否存在、設置和查詢文件的最近修改時間等等操作。

值得注意的地方是,Java 中通常的 File 并不代表一個真實存在的文件對象,當你通過指定一個路徑描時,它就會返回一個代表這個路徑相關聯的一個虛擬對象,這個可能是一個真實存在的文件或者是一個包含多個文件的目錄。

下面我們一起來看看 File 類有哪些操作方法,以及實際使用過程中如何避坑。

二、File 類介紹

大家 JDK 中源代碼,你會發現 File 類沒有無參構造方法,最常用的是使用下面的構造方法來生成 File 對象。

以 windows 操作系統為例,操作文件的方式如下!

// 指定一個完整路徑,獲取文件對象
File file = new File("D:\\Files\\test.txt");
System.out.println(file1.getName());

// 指定一個父文件路徑和子文件名稱,獲取文件對象
File file = new File("D:\\Files", "test.txt");
System.out.println(file2.getName());

File 類中定義了很多關于 File 對象的一些操作方法,我們通過一段代碼一起來看看。

public static void main(String[] args) throws Exception {
    // 指定一個文件完整路徑,獲取文件對象
    File file = new File("D:\\Files\\test.txt");

    // 獲取文件父節點目錄對象
    File parentFile = file.getParentFile();

    // 判斷指定路徑的文件目錄是否存在
    if(parentFile.exists()){
        System.out.println("文件目錄存在");
    } else {
        // 創建文件夾,可以自動創建多級文件夾
        parentFile.mkdirs();
        System.out.println("文件目錄不存在,創建一個文件目錄");
    }

    // 判斷指定父節點路徑的是否是一個目錄
    if(parentFile.isDirectory()){
        System.out.println("父節點路徑是一個目錄");
    }

    // 判斷指定路徑的文件是否存在
    if(file.exists()){
        System.out.println("文件存在");
    } else {
        // 創建文件
        file.createNewFile();
        System.out.println("文件不存在,創建一個文件");
    }
    
    // 獲取目錄下的所有文件/文件夾(僅該層路徑下)
    File[] files = parentFile.listFiles();
    System.out.print("路徑下有文件:");
    for (File f : files) {
        System.out.print(f + ";");
    }
    System.out.println();

    // 獲取文件名、文件夾名
    System.out.println("files[0]的文件名:" + files[0].getName());
    // 獲取文件、文件夾路徑
    System.out.println("files[0]的文件路徑:" + files[0].getPath());
    // 獲取文件、文件夾絕對路徑
    System.out.println("files[0]的絕對路徑:" + files[0].getAbsolutePath());
    // 獲取文件父目錄路徑
    System.out.println("files[0]的父文件夾名:" + files[0].getParent());
    // 判斷文件、文件夾是否存在
    System.out.println(files[0].exists() ? "files[0]的存在" : "files[0]的不存在");
    // 判斷文件是否可寫
    System.out.println(files[0].canWrite() ? "files[0]的可寫" : "files[0]的不可寫");
    // 判斷文件是否可讀
    System.out.println(files[0].canRead() ? "files[0]的可讀" : "files[0]的不可讀");
    // 判斷文件是否可執行
    System.out.println(files[0].canExecute() ? "file[0]可執行" : "file[0]不可執行");
    // 判斷文件、文件夾是不是目錄
    System.out.println(files[0].isDirectory() ? "files[0]的是目錄" : "files[0]的不是目錄");
    // 判斷拿文件、文件夾是不是標準文件
    System.out.println(files[0].isFile() ? "files[0]的是文件" : "files[0]的不是文件");
    // 判斷路徑名是不是絕對路徑
    System.out.println(files[0].isAbsolute() ? "files[0]的路徑名是絕對路徑" : "files[0]的路徑名不是絕對路徑");
    // 獲取文件、文件夾上一次修改時間
    System.out.println("files[0]的最后修改時間:" + files[0].lastModified());
    // 獲取文件的字節數,如果是一個文件夾則這個值為0
    System.out.println("files[0]的大小:" + files[0].length() + " Bytes");
    // 獲取文件路徑URI后的路徑名
    System.out.println("files[0]的路徑轉換為URI:" + files[0].toURI());

    // 下面的代碼邏輯,假設目錄下有3個以上文件

    // 對文件重命名
    File newfile = new File(file.getParentFile(), "22.txt");  //新的文件名稱
    files[0].renameTo(newfile);

    // 刪除指定的文件、文件夾
    files[1].delete();

    // 當虛擬機終止時刪除指定的文件、文件夾
    files[2].deleteOnExit();
}

輸出結果如下:

文件目錄存在
父節點路徑是一個目錄
文件存在
路徑下有文件:D:\Files\1.txt;D:\Files\2.txt;D:\Files\3.txt;
files[0]1.txt
files[0]的文件路徑:D:\Files\1.txt
files[0]的絕對路徑:D:\Files\1.txt
files[0]的父文件夾名:D:\Files
files[0]的存在
files[0]的可寫
files[0]的可讀
file[0]不可執行
files[0]的不是目錄
files[0]的是文件
files[0]的路徑名是絕對路徑
files[0]的最后修改時間:1686814709000
files[0]的大小:8 Bytes
files[0]的路徑轉換為URI:file:/D:/Files/1.txt

示例代碼中,基本比較全面地演示了 File 的一些基本用法,比如文件或者文件夾的新增、重命名、刪除,以及獲取文件或者文件夾相關信息等操作。

其中有兩點地方,值得注意:

  • 第一個就是分隔符的問題。不同的操作系統,路徑分隔符是不一樣的,這個可以通過File.separator解決,具體實現看下面
  • 第二個就是刪除的如果是一個文件夾的話,文件夾下還有文件/文件夾,是無法刪除成功的

關于不同操作系統下的路徑符號問題解決辦法!(windows->“\”;Linux->“/”)

在實際的編程過程中,我們不可能為了區分操作系統,然后又單獨寫一份文件路徑。

可以通過File.separator來實現跨平臺的編程邏輯,File.separator會根據不同的操作系統取不同操作系統下的分隔符。

以上面的示范代碼為例,我們可以對寫法進行如下改造!

// windows 系統下的文件絕對路徑定義方式
String path = "d:"+File.separator +"Files"+File.separator+"text.txt";
File file = new File(path);

文件的路徑結果會與預期一致!

三、文件的讀寫操作

對文件的讀寫,可以通過字節流或者字符流接口來完成,但不管哪種方式,大致分以下幾個步驟完成。

  • 第一步:獲取一個文件 file 對象
  • 第二步:通過 file 對象,獲取一個字節流或者字符流接口的對象,進行讀寫操作
  • 第三步:關閉文件流

具體的代碼實踐如下!

3.1、通過字節流接口寫入

字節流接口的文件寫入,可以通過OutputStream下的子類FileOutputStream來實現文件的數據寫入操作。

具體實例如下:

// 創建一個 readWriteDemo.txt 文件
File file = new File("readWriteDemo.txt");
if(!file.exists()){
    file.createNewFile();
}

// 向文件中寫入數據(這種方式會覆蓋原始數據)
OutputStream outputStream = new FileOutputStream(file);
String str = "我們一起學習Java";
outputStream.write(str.getBytes(StandardCharsets.UTF_8));
outputStream.close();

上面的操作方式會覆蓋原始數據,如果想在已有的文件里面,進行追加寫入數據,可以如下方式實現。

// 追加數據寫入(這種方式不會覆蓋原始數據)
OutputStream appendOutputStream = new FileOutputStream(file, true);
String str = "-----這是追加的內容------";
appendOutputStream.write(str.getBytes(StandardCharsets.UTF_8));
appendOutputStream.close();

3.2、通過字節流接口讀取

字節流方式的文件讀取,可以通過InputStream下的子類FileInputStream來實現文件的數據讀取操作。

具體實例如下:

// 獲取 readWriteDemo.txt 文件
File file = new File("readWriteDemo.txt");
if(file.exists()){
    // 獲取文件流
    InputStream input = new FileInputStream(file);

    // 臨時區
    byte[] buffer = new byte[1024];

    // 分次讀取數據,每次最多讀取1024個字節,將數據讀取到臨時區之中,同時返回讀取的字節個數,如果遇到文件末尾,會返回-1
    int len;
    while ((len = input.read(buffer)) > -1) {
        // 字節轉為字符串
        String msg = new String(buffer, 0, len, StandardCharsets.UTF_8);
        System.out.println(msg);
    }

    // 數據讀取完畢之后,關閉輸入流
    input.close();
}

3.3、通過字符流接口寫入

在之前的文章中,我們了解到為了簡化字符的數據傳輸操作,JDK 提供了 Writer 與 Reader 字符流接口。

字符流方式的文件寫入,可以通過Writer下的子類FileWriter來實現文件的數據寫入操作。

具體實例如下:

// 創建一個 newReadWriteDemo.txt 文件
File file = new File("newReadWriteDemo.txt");
if(!file.exists()){
    file.createNewFile();
}
// 實例化Writer類對象
Writer out = new FileWriter(file) ;
// 輸出字符串
out.write("Hello");
// 輸出換行
out.write("\n");
// 追加信息,append 方法底層本質調用的是 write 方法
out.append("我們一起來學習Java");

// 關閉輸出流
out.close();

3.4、通過字符流接口讀取

字符流方式的文件讀取,可以通過Reader下的子類FileReader來實現文件的數據讀取操作。

具體實例如下:

// 創建一個 newReadWriteDemo.txt 文件
File file = new File("newReadWriteDemo.txt");
if(file.exists()){
    // 實例化輸入流
    Reader reader = new FileReader(file);
    // 臨時區
    char[] buffer = new char[1024];

    // 分次讀取數據,每次最多讀取1024個字符,將數據讀取到臨時區之中,同時返回讀取的字節個數,如果遇到文件末尾,會返回-1
    int len;
    while ((len = reader.read(buffer)) > -1) {
        // 字符轉為字符串
        String msg = new String(buffer, 0, len);
        System.out.println(msg);
    }

    // 關閉輸入流
    reader.close();
}

3.5、文件拷貝

在實際的軟件開發過程中,避免不了文件拷貝。通過以上的接口方法,我們可以很容易的寫出一個文件復制的方法。

比如以字節流操作為例,具體實例如下:

// 1. 創建一個字節數組作為數據讀取的臨時區
byte[] buffer = new byte[1024];
// 2. 創建一個 FileInputStream 對象用于讀取文件
InputStream input = new FileInputStream(new File("input.txt"));
// 3. 創建一個 FileOutputStream 對象用于寫入文件
OutputStream output = new FileOutputStream(new File("output.txt"));
// 4. 循環讀取文件內容到臨時區,并將臨時區中的數據寫入到輸出文件中
int length;
while ((length = input.read(buffer)) != -1) {
    output.write(buffer, 0, length);
}
// 5. 關閉輸入流
input.close();
// 6. 關閉輸出流
output.close();

除此之外,JDK 也支持采用緩存流讀寫技術來實現數據的高效讀寫。

之所為高效,是因為字節緩沖流內部維護了一個緩沖區,讀寫時先將數據存入緩沖區中,當緩沖區滿時再將數據一次性讀取出來或者寫入進去,這樣可以減少與磁盤實際的 I/O 操作次數,可以顯著提升讀寫操作的效率。

比如以字節流緩沖流為例,包裝類分別是:BufferedInputStream(字節緩存輸入流) 和 BufferedOutputStream(字符緩存輸入流)。

采用緩沖流拷貝文件,具體實例如下:

// 1. 創建一個字節數組作為數據讀取的臨時區
byte[] buffer = new byte[1024];
// 2. 創建一個 BufferedInputStream 緩存輸入流對象用于讀取文件
InputStream bis = new BufferedInputStream(new FileInputStream(new File("input.txt")));
// 3. 創建一個 BufferedOutputStream 緩存輸出流對象用于寫入文件
OutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("output.txt")));

// 4. 循環讀取文件內容到臨時區,并將緩沖區中的數據寫入到輸出文件中
int length;
while ((length = bis.read(buffer)) != -1) {
    bos.write(buffer, 0, length);
}
// 5. 關閉輸入流
bis.close();
// 6. 關閉輸出流
bos.close();

在大文件的拷貝中,使用緩存流比不使用緩存流技術至少快 10 倍,耗時是很明顯的,大家可以親自試一下。

四、字節流與字符流的互轉

在之前的文章中,我們了解到字節流與字符流,兩者其實是可以互轉的。

其中 InputStreamReader 和 OutputStreamWriter 就是轉化橋梁。

4.1、字節流轉字符流的操作

字節流轉字符流的操作,主要體現在數據的讀取階段,轉化過程如下圖所示:

圖片

以上文中的字節流接口讀取文件為例,如果我們想要轉換字符流接口來讀取數據,具體的操作方式如下:

// 獲取 readWriteDemo.txt 文件
File file = new File("readWriteDemo.txt");
if(file.exists()){
    // 獲取字節輸入流
    InputStream inputStream = new FileInputStream(file);
    // 轉字符流輸入流,指定 UTF_8 編碼規則,讀取數據
    Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);

    // 緩沖區
    char[] buffer = new char[1024];

    // 分次讀取數據,每次最多讀取1024個字符,將數據讀取到緩沖區之中,同時返回讀取的字節個數
    int len;
    while ((len = reader.read(buffer)) > -1) {
        // 字符轉為字符串
        String msg = new String(buffer, 0, len);
        System.out.println(msg);
    }

    // 關閉輸入流
    reader.close();
    inputStream.close();
}

當讀取數據的時候,先通過字節流讀取,再轉成字符流讀取。

字節流轉字符流,需要指定編碼規則,如果沒有指定,會取當系統默認的編碼規則。

4.2、字符流轉字節流的操作

字符流轉字節流的操作,主要體現在數據的寫入階段,轉化過程如下圖所示:

圖片圖片

以上文中的字節流接口寫入文件為例,如果我們想要轉換字符流接口來寫入數據,具體的操作方式如下:

// 創建一個 newReadWriteDemo.txt 文件
File file = new File("readWriteDemo.txt");
if(!file.exists()){
    file.createNewFile();
}

// 獲取字節輸出流
OutputStream outputStream = new FileOutputStream(file);
// 轉字符流輸出流,指定 UTF_8 編碼規則,寫入數據
Writer out = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);
// 輸出字符串
out.write("Hello");
// 輸出換行
out.write("\n");
// 追加信息,append 方法底層本質調用的是 write 方法
out.append("我們一起來學習Java");

// 關閉輸出流
out.close();
outputStream.close();

同樣的,當寫入數據的時候,先通過字符流寫入,再轉成字節流輸出。

字符流轉字節流,也需要指定編碼規則,如果沒有指定,會取當系統默認的編碼規則。

五、小結

本文主要圍繞 Java 對磁盤文件的讀取和寫入數據的方式做了一次簡單的總結。

責任編輯:武曉燕 來源: Java極客技術
相關推薦

2023-12-07 07:03:09

2023-08-28 07:02:10

2025-01-09 07:58:42

C#API函數

2023-04-10 09:31:00

路由技術廠商

2024-01-19 08:25:38

死鎖Java通信

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2023-07-26 13:11:21

ChatGPT平臺工具

2024-01-02 12:05:26

Java并發編程

2023-08-01 12:51:18

WebGPT機器學習模型

2023-06-08 07:34:19

HDFS小文件壓縮包

2023-05-18 09:01:11

MBRGPT分區

2024-02-06 08:33:54

文件系統SSD

2024-02-27 08:39:19

RustJSON字符串

2023-08-22 10:25:19

CSS動畫網頁

2023-01-30 09:01:54

圖表指南圖形化

2024-08-06 09:47:57

2022-07-08 09:27:48

CSSIFC模型

2023-10-10 11:04:11

Rust難點內存

2024-07-31 08:39:45

Git命令暫存區
點贊
收藏

51CTO技術棧公眾號

国产精品都在这里| 亚洲欧美日本精品| 欧美乱做爰xxxⅹ久久久| 黄色片一区二区三区| 一区二区国产在线观看| 国产亚洲成av人片在线观看桃| www.久久久精品| 国产精品探花在线| 国产欧美日韩另类视频免费观看 | 亚洲精品天堂网| 日韩三级av高清片| 色婷婷综合久色| 欧美激情亚洲天堂| www.av在线| 99久久免费视频.com| 国产精品视频xxx| 久久久久久久极品| 一区二区在线| 在线观看欧美视频| 亚洲中文字幕无码一区| 欧美性www| 一本色道**综合亚洲精品蜜桃冫| 亚洲自拍偷拍一区二区三区| 日本亚洲欧美| 粉嫩13p一区二区三区| 国产精品久久久久久超碰| 国产一级片网址| 久久久久久久久久久久久久| 亚洲男人的天堂在线播放| 亚洲少妇一区二区| 91精品视频一区二区| 欧美日韩一区二区三区在线免费观看| 男插女免费视频| 在线视频婷婷| 国产欧美日韩综合| 日韩av一级大片| 亚洲三区在线播放| www.在线成人| 国产精品初高中精品久久| 国产乱淫av片免费| 久久国产乱子精品免费女| 欧美重口另类videos人妖| 久久久美女视频| 午夜精品影院| 欧美精品性视频| 日韩精品123区| 99久久99久久精品国产片果冰| 亚洲精品在线视频| 91精品国产自产| 人体久久天天| 亚洲精品久久久久中文字幕欢迎你 | 欧美性色欧美a在线播放| 欧美 日韩 亚洲 一区| 免费在线看污片| 一区二区不卡在线视频 午夜欧美不卡在 | 蜜臀av免费观看| 日本一区二区三区视频在线| 高跟丝袜欧美一区| 97视频在线免费播放| 中文字幕一区久| 精品福利免费观看| av动漫在线观看| 另类图片综合电影| 欧美午夜精品久久久久久孕妇| 天天干天天干天天干天天干天天干| 中文字幕乱码中文乱码51精品| 舔着乳尖日韩一区| 国产中文字幕免费观看| 欧美人与性动交xxⅹxx| 在线免费观看一区| 91欧美视频在线| 国产精品成人3p一区二区三区| 欧美一区二区女人| 中国免费黄色片| 啄木系列成人av电影| 在线观看日韩av| 天堂网avav| 亚洲国产专区| 国产成人精品视频在线观看| 中文字幕在线视频第一页| 麻豆高清免费国产一区| 亚洲自拍欧美色图| 国精产品一品二品国精品69xx| 91在线观看污| 在线观看日韩片| 麻豆蜜桃在线| 91久久久免费一区二区| 色网站在线视频| 久久91在线| 色青青草原桃花久久综合| 91成人福利视频| 西西人体一区二区| 成人av电影天堂| 四季av日韩精品一区| 欧美激情在线观看视频免费| 日本特级黄色大片| 碰碰在线视频| 91精品欧美一区二区三区综合在| 亚洲熟女一区二区| 91亚洲自偷观看高清| 国语自产精品视频在线看一大j8| 日本免费在线观看视频| 国产一区91精品张津瑜| 久久草视频在线看| 伊人影院蕉久影院在线播放| 欧美性xxxxxxx| 制服.丝袜.亚洲.中文.综合懂| 亚洲男人都懂第一日本| 欧美成人激情在线| 精品黑人一区二区三区| 高清国产午夜精品久久久久久| 欧美日韩国产一二| 黄色的视频在线观看| 欧美视频日韩视频| 久久国产精品影院| 欧美日韩精选| 91久久国产婷婷一区二区| 青青草观看免费视频在线| 亚洲精品欧美激情| 视色视频在线观看| 亚洲色图美女| 韩国国内大量揄拍精品视频| 国产精品国产一区二区三区四区| 久久久久高清精品| 国产美女网站在线观看| 中文字幕亚洲在线观看| www.久久撸.com| 国产精品xxxxxx| 久久久精品影视| 黄色大片中文字幕| 红杏aⅴ成人免费视频| 欧美另类极品videosbestfree| 中文字幕乱码无码人妻系列蜜桃| 99久久精品免费| 国产无限制自拍| 999久久久久久久久6666| 波霸ol色综合久久| 青青国产在线视频| 久久日一线二线三线suv| 青青草成人免费在线视频| 2023国产精华国产精品| 欧美激情国产精品| 亚洲风情第一页| 亚洲国产一区二区视频| 国产精品99久久久精品无码| 99久久视频| 成人高h视频在线| 日韩在线观看www| 欧美日本一区二区在线观看| 日本欧美一区二区三区不卡视频| 日韩二区三区四区| 五月天久久狠狠| 亚洲成人激情社区| 曰本色欧美视频在线| 一级片在线免费播放| 日本一区二区三级电影在线观看| 欧美少妇性生活视频| 九九视频免费观看视频精品| 日韩**中文字幕毛片| 欧洲综合视频| 欧美伊人久久久久久午夜久久久久| 亚洲 小说 欧美 激情 另类| 日韩不卡免费视频| 亚洲人成网站在线观看播放 | 国产亚洲在线观看| 久久国产日韩欧美| jk漫画禁漫成人入口| 在线视频国产日韩| 国产精品久久久久久久久久久久久久久久 | 免费永久网站黄欧美| 日本高清不卡一区二区三| 天然素人一区二区视频| 精品国产依人香蕉在线精品| 国产内射老熟女aaaa∵| 亚洲第一福利一区| 国精品无码人妻一区二区三区| 日韩高清欧美激情| 天堂а√在线中文在线| 欧美a一欧美| 国产精品极品尤物在线观看| 国产网友自拍视频导航网站在线观看| 91精品国产综合久久福利软件| 久久网一区二区| 久久久久久久精| 亚洲av无码久久精品色欲| 亚洲国产专区校园欧美| 日韩久久不卡| www.亚洲一二| 国产精品激情av在线播放| 婷婷色在线播放| 精品夜色国产国偷在线| 国产精品人人爽| 欧美日韩国内自拍| 黄色香蕉视频在线观看| 久久综合99re88久久爱| 三级黄色片免费看| 天堂久久久久va久久久久| 中国黄色录像片| 一道本一区二区三区| 成人久久18免费网站图片| 九九精品调教| 综合136福利视频在线| 五月婷婷六月色| 制服.丝袜.亚洲.另类.中文| 国产精品视频123| 亚洲精品视频在线观看网站| 成人性生交大免费看| 国产成人午夜高潮毛片| 亚洲视频在线观看一区二区三区| 欧美午夜不卡影院在线观看完整版免费| 欧美色欧美亚洲另类七区| 超碰成人在线观看| 91久久在线播放| a∨色狠狠一区二区三区| 992tv成人免费视频| 少女频道在线观看免费播放电视剧| 国产亚洲在线播放| 天天操天天射天天| 精品少妇一区二区三区免费观看 | 色戒汤唯在线| 欧美黑人性猛交| a在线免费观看| 日韩在线观看免费网站| 黄色软件在线观看| 亚洲精品美女久久| 亚洲成人久久精品| 日韩亚洲欧美在线| 国产精品久久影视| 欧美午夜片在线观看| 日韩欧美在线观看免费| 午夜精品视频一区| 国产在线欧美在线| 亚洲精品国产一区二区精华液| 18啪啪污污免费网站| 久久毛片高清国产| www.色多多| 99久久精品99国产精品| av无码一区二区三区| 福利一区二区在线| 精品人妻二区中文字幕 | 超碰男人的天堂| 成人精品视频一区二区三区| 久久久久亚洲av无码麻豆| 狠狠色丁香婷综合久久| 青青草久久伊人| 精品中文字幕一区二区| 久久婷五月综合| 久久国产精品免费| 一本之道在线视频| 国产成人精品午夜视频免费 | 久久久亚洲高清| 人人妻人人藻人人爽欧美一区| 久久色中文字幕| 免费网站在线高清观看| 欧美激情综合网| 992在线观看| ...av二区三区久久精品| 久久久99999| 亚洲欧美日韩久久精品| 欧美精品一级片| 午夜免费久久看| 精品久久久久久久久久久国产字幕| 色综合色狠狠综合色| 日本丰满少妇做爰爽爽| 欧美日韩一区成人| 99视频在线观看免费| 亚洲精品suv精品一区二区| 青青草观看免费视频在线| 在线观看久久av| 二区在线播放| 91黑丝在线观看| 精品国产欧美日韩一区二区三区| 国产日韩欧美电影在线观看| 视频一区国产| 欧美尤物一区| 一区二区电影在线观看| 我的公把我弄高潮了视频| 日韩专区在线视频| www.欧美激情.com| av一区二区不卡| 亚洲色图100p| 亚洲电影激情视频网站| 成人一级免费视频| 日韩欧美美女一区二区三区| 午夜福利视频一区二区| 自拍偷拍亚洲一区| 51漫画成人app入口| 国产精品大片wwwwww| 天堂va在线高清一区| 久久波多野结衣| 91精品成人| 国产熟女高潮视频| 国产精品自拍三区| 美女爆乳18禁www久久久久久| 日韩美女视频一区二区| 在线观看免费国产视频| 欧美美女直播网站| 亚洲欧洲成人在线| 欧美日韩不卡合集视频| 国模一区二区| 国产视频一区二区三区四区| 日韩精品网站| 成人免费毛片网| 国产大片一区二区| 国产精品www爽爽爽| 亚洲成va人在线观看| 亚洲字幕av一区二区三区四区| 精品88久久久久88久久久| 91社区在线观看| 欧洲成人午夜免费大片| 日韩精品久久久久久久软件91| 欧美三日本三级少妇三99| 欧美三级免费| 思思久久精品视频| 久久久久国产精品麻豆| 日韩xxx高潮hd| 欧美一级艳片视频免费观看| 成人在线观看一区| 欧美一级成年大片在线观看| 日韩精品亚洲专区在线观看| 视频一区视频二区视频三区高| 极品中文字幕一区| 午夜影院免费观看视频| 欧美国产日韩精品免费观看| 欧美啪啪小视频| 亚洲国产成人爱av在线播放| 超碰最新在线| 国产精品自产拍在线观看| 深爱激情综合网| 久久精品免费一区二区| 不卡一区在线观看| 国产真实夫妇交换视频| 欧美大片在线观看| av电影高清在线观看| 成人免费视频a| 国产精品7m凸凹视频分类| www.精品在线| 国产精品久久午夜| 一区二区三区黄色片| 日韩中文字幕在线观看| 男人亚洲天堂| 国产av第一区| 国产一区二区0| 久久精品波多野结衣| 欧美一级淫片007| 性欧美ⅴideo另类hd| 91嫩草视频在线观看| 国语自产精品视频在线看8查询8| 在线观看你懂的视频| 亚洲精选免费视频| 亚洲卡一卡二卡三| 久久久女女女女999久久| 麻豆成人入口| 成年人免费在线播放| 国产日韩成人精品| 中文字幕一区二区三区人妻四季| 中文字幕国产精品| 国产视频一区二区在线播放| 一级特黄妇女高潮| 国产成人av电影免费在线观看| 欧美日韩中文视频| 亚洲国产精品悠悠久久琪琪| 桃色av一区二区| 色综合666| 国模大尺度一区二区三区| 人妻少妇精品一区二区三区| 亚洲成年人在线播放| 热色播在线视频| 色噜噜色狠狠狠狠狠综合色一| 奇米影视一区二区三区小说| 免费高清在线观看电视| 日韩一级二级三级精品视频| 国产高清在线a视频大全| 九九九九精品九九九九| 日韩国产精品大片| 91 在线视频| 亚洲国产美女精品久久久久∴| 自由日本语热亚洲人| 中文字幕日韩一区二区三区不卡 | av黄色在线免费观看| 欧美精品自拍偷拍| sm性调教片在线观看 | 日本少妇色视频| 欧美偷拍一区二区| 在线看女人毛片| 欧美精品一区二区三区四区五区| 免费看欧美女人艹b| 欧美被狂躁喷白浆精品| 亚洲免费伊人电影在线观看av| 色诱色偷偷久久综合| 日本午夜激情视频| 日韩一区在线播放| 色在线免费视频| 亚洲free嫩bbb| 石原莉奈一区二区三区在线观看| 四虎884aa成人精品| 国产丝袜一区二区三区| 国产精品国产亚洲精品| 日本免费观看网站| 亚洲一区在线观看视频|