麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

前端學PHP之文件操作

2020-03-22 20:23:46
字體:
來源:轉載
供稿:網友

  • 前面的話

      在程序運行時,程序本身和數據一般都存在內存中,當程序運行結束后,存放在內存中的數據被釋放。如果需要長期保存程序運行所需的原始數據,或程序運行產生的結果,就需要把數據存儲在文件或數據庫。一般地,小型數據存儲在文件中,海量數據存儲在數據庫中。本文主要介紹php中目錄和文件的基本操作

    文件類型

      文件一般指存儲在外部介質上具有名字(文件名)的一組相關數據集合。用文件可長期保存數據,并實現數據共享

      PHP是以UNIX的文件系統為模型的。因此在Windows系統中我們只能獲得”file”、”dir”或者“unknown”三種文件類型。而在UNIX系統中,我們可以獲得block、char、dir、fifo、file、link和unknown七種類型

      可以使用函數filetype()獲取文件的具體類型,可能的值有fifo,char,dir,block,link,file 和 unknown

    string filetype ( string filename ) 

      如果出錯則返回 FALSE。如果調用失敗或者文件類型未知的話 filetype() 還會產生一個 E_NOTICE 消息

      在服務器中新建一個目錄test,并在目錄中新建一個文件a.txt

    <?phpecho filetype('test/a.txt');  // fileecho filetype('test/');        // direcho filetype('test/b.txt');  // Warning: filetype(): Lstat failed for test/b.txt?>

      在這7種文件類型中,window系統常用的是'file'和'dir'這兩種,它們配套的類型檢測函數分別是is_dir( )和is_file( )

    is_dir( )

      判斷給定文件名是否是一個目錄。如果文件名存在并且是一個目錄則返回 true,否則返回 false 

    bool is_dir(_name)

    is_file( )

      判斷給定文件名是否為一個正常的文件,如果文件存在且為正常的文件則返回 true

    bool is_file(_name)    
    <?phpvar_dump (is_file('test/a.txt'));  //boolean truevar_dump (is_dir('test/'));        //boolean true?>

    文件屬性

      一般地,在文件或目錄html' target='_blank'>右鍵菜單中,選擇屬性,即可查看文件的屬性

      下表中列出了php中關于文件屬性的常用函數

    <?phpvar_dump (file_exists('test/a.txt'));  //boolean truevar_dump (filesize('test/a.txt'));  // int 0 var_dump (is_readable('test/a.txt'));  //boolean truevar_dump (is_writeable('test/a.txt'));  //boolean truevar_dump (is_executable('test/a.txt'));  //boolean falsevar_dump (date('Y-m-d H:i:s',(filectime('test/a.txt'))));//string '2016-11-22 06:47:54' (length=19)var_dump (date('Y-m-d H:i:s',(filemtime('test/a.txt'))));//string '2016-11-22 06:47:54' (length=19)var_dump (date('Y-m-d H:i:s',(fileatime('test/a.txt'))));//string '2016-11-22 06:47:54' (length=19)?>

    目錄路徑

      windows下的目錄路徑使用是正斜杠(),而unix下的目錄路徑使用是反斜杠(/)

    $unixPath='/var/www/html/index.php';        //在UNIX系統中的絕對路徑,必須使用'/'分隔$winPath='C:/Appserv/www/index.php';     //在Windows系統的絕對路徑,默認使用''分隔$winPath4='C:/Appserv/www/index.php';       //在Windows系統中也可使用“/”分隔

      因為在Windows系統中也可使用(/)分隔。所以,在PHP中,不論是什么操作系統,全部都使用反斜杠(/)代表路徑分隔符號

      在PHP中,還提供了一個常量DIRECTORY_SEPARATOR,以此來代表目錄分隔符,但寫起來較麻煩

    <?phpecho 'c:'.DIRECTORY_SEPARATOR.'a'.DIRECTORY_SEPARATOR.'b'.DIRECTORY_SEPARATOR.'c'; //c:ac?>

      在windows下多個路徑的分隔符使用分號(;)分隔,而unix下使用冒號(:)分隔

      在PHP中,提供了一個常量PATH_SEPARATOR,用來在跨平臺的情況下,表示多個路徑之間的分隔符

    <?phpecho 'aaa/ccc/ddd'.PATH_SEPARATOR.'/www/yyyy';//aaa/ccc/ddd;/www/yyyy?>

    換行 

      在window下,換行是 ,而在unix下,換行是 。通常在寫程序中,換行就以unix為準,寫作

      同樣地,PHP提供了一個常量PHP_EOL,用來在跨平臺的情況下,表示換行

    .和..

      在PHP中,.表示當前目錄,..表示上一級目錄

    <?phpvar_dump (file_exists('test/a.txt'));//boolean truevar_dump (file_exists('./test/a.txt'));//boolean truevar_dump (file_exists('../www/test/a.txt'));//boolean true?>

    根路徑

      有兩種根路徑需要進行區分,一種是客戶端根路徑,一種是服務器根路徑

      以我自己在d盤安裝的wamp為例,客戶端根路徑指'd:wampwww',而服務器根路徑為為'd:'

    <?phpecho '<img src='/a.jpg'>';//客戶端根路徑,相當于d:wampwwwa.jpgmkdir('/hello');//服務器根路徑,相當于d:hello?>

    路徑解析函數

    【basename()】

      basename()函數用于返回路徑中的文件名部分

    <?phpecho '1) '.basename('/etc/sudoers.d', '.d');//1) sudoersecho '2) '.basename('/etc/passwd').PHP_EOL;//2) passwdecho '3) '.basename('/etc/').PHP_EOL;//3) etcecho '4) '.basename('.').PHP_EOL;//4) .echo '5) '.basename('/');//5) ?>

    【dirname()】

      dirname()函數用于返回路徑中的目錄部分

    <?phpecho '1) ' . dirname('/etc/passwd') . PHP_EOL; // 1) /etcecho '2) ' . dirname('/etc/') . PHP_EOL; // 2) echo '3) ' . dirname('.'); // 3) .?>

    【pathinfo()】

      pathinfo()函數用于返回文件路徑的信息

    <?php$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');echo $path_parts['dirname'], '';// '/www/htdocs/inc' 目錄名echo $path_parts['basename'], '';// 'lib.inc.php' 文件名echo $path_parts['extension'], '';// 'php' 文件后綴echo $path_parts['filename'], ''; // 'lib.inc' 文件名不帶后綴?>

    【realpath()】

      realpath()函數用于返回規范化的絕對路徑名

      在Windows上,realpath()會將unix風格的路徑改成Windows風格的

    <?phpecho realpath('/wamp');// 'D:wamp'?>

    目錄遍歷

    glob()

      glob()函數用于尋找與模式匹配的文件路徑

    array glob ( string $pattern [, int $flags = 0 ] )

      在www目錄下新建a.txt和b.txt文件

    <?phpforeach (glob('*.txt') as $filename) {    //a.txt size 1050 b.txt size 73    echo '$filename size ' . filesize($filename) . '';}?>

    opendir()

      opendir()函數用于打開目錄句柄。如果成功則返回目錄句柄的resource,失敗則返回 FALSE

    resource opendir ( string $path [, resource $context ] )
    <?phpvar_dump(opendir('test'))//resource(3, stream)?>

    closedir()

      closedir()函數用于關閉目錄句柄

    void closedir ([ resource $dir_handle ] )

      參數dir_handle表示目錄句柄的 resource,之前由 opendir()所打開的。如果目錄句柄沒有指定,那么會假定為是opendir()所打開的最后一個句柄

    <?php$dir = opendir('test');closedir($dir);?>

    readdir()

      readdir()函數用于從目錄句柄中讀取條目,返回目錄中下一個文件的文件名。文件名以在文件系統中的排序返回,失敗時返回 FALSE

    string readdir ([ resource $dir_handle ] )

      在www目錄下新建目錄test,并在目錄test下新建a.txt和b.txt文件

    <?php$dir = opendir('test');echo readdir($dir).'<br>';//.echo readdir($dir).'<br>';//..echo readdir($dir).'<br>';//a.txtecho readdir($dir).'<br>';//b.txtecho readdir($dir).'<br>';//closedir($dir);?>

      在遍歷目錄時,每個目錄的前兩個返回值都是.和..,.代表當前目錄,..代表上一級目錄

      所以,一般地,列出當前目錄的所有文件并去掉 . 和 ..,常采用下面的代碼

    <?phpif ($handle = opendir('test')) {    while (false !== ($file = readdir($handle))) {        if ($file != '.' && $file != '..') {            echo '$file';        }    }    closedir($handle);}?>

      接下來,在test目錄下,新建一個目錄in,并在in目錄中新建文件c.txt。然后,目錄和文件區分顯示

      [注意]通過is_dir()函數判斷目錄時,需要加入路徑

    <?phpif ($handle = opendir('test')) {    while (false !== ($file = readdir($handle))) {        if ($file != '.' && $file != '..') {            $file = 'test/'.$file;            if(is_dir($file)){                echo '目錄:'.$file.'<br>';            }else{                echo '文件:'.$file.'<br>';            }        }    }    closedir($handle);}/*文件:test/a.txt文件:test/b.txt目錄:test/in */?>    

    rewinddir()

      rewinddir()函數用于倒回目錄句柄,將參數dir_handle指定的目錄流重置到目錄的開頭

    void rewinddir ( resource $dir_handle )

      如果不使用rewinddir()函數,則文件只能遍歷一次

    <?phpif ($handle = opendir('test')) {    while (false !== ($file = readdir($handle))) {        if ($file != '.' && $file != '..') {            $file = 'test/'.$file;            if(is_dir($file)){                echo '目錄:'.$file.'<br>';            }else{                echo '文件:'.$file.'<br>';            }        }    }    while (false !== ($file = readdir($handle))) {        if ($file != '.' && $file != '..') {            $file = 'test/'.$file;            if(is_dir($file)){                echo '目錄:'.$file.'<br>';            }else{                echo '文件:'.$file.'<br>';            }        }    }    closedir($handle);}/*文件:test/a.txt文件:test/b.txt目錄:test/in */?>

      使用rewinddir()函數,可以把目錄句柄返回到第一個文件,從而實現重新遍歷

    <?phpif ($handle = opendir('test')) {    while (false !== ($file = readdir($handle))) {        if ($file != '.' && $file != '..') {            $file = 'test/'.$file;            if(is_dir($file)){                echo '目錄:'.$file.'<br>';            }else{                echo '文件:'.$file.'<br>';            }        }    }    rewinddir($handle);    while (false !== ($file = readdir($handle))) {        if ($file != '.' && $file != '..') {            $file = 'test/'.$file;            if(is_dir($file)){                echo '目錄:'.$file.'<br>';            }else{                echo '文件:'.$file.'<br>';            }        }    }    closedir($handle);}/*文件:test/a.txt文件:test/b.txt目錄:test/in文件:test/a.txt文件:test/b.txt目錄:test/in */?>

    目錄統計

    disk_total_space()

      disk_total_space()函數返回一個目錄的磁盤總大小

    float disk_total_space ( string $directory )
    <?php$ds = disk_total_space('C:');echo $ds.'<br>';//126652637184$ds = disk_total_space('D:');echo $ds;//1000202240000?>

    disk_free_space()

      disk_free_space()函數返回目錄中的可用空間

    float disk_free_space ( string $directory )
    <?php$ds = disk_free_space('C:');echo $ds.'<br>';//86087041024$ds = disk_free_space('D:');echo $ds;//481647472640?>

      下面來統計在www文件夾下新建的test目錄的個數

    <?php    $dirn = 0; //目錄數    $filen = 0; //文件數    //統計一個目錄下的文件和目錄的個數    function getdirnum($file) {        global $dirn;        global $filen;            $dir = opendir($file);        while (false !== ($filename = readdir($dir))) {            if($filename!='.' && $filename !='..') {                $filename = $file.'/'.$filename; //更新路徑                if(is_dir($filename)) {                    $dirn++;                    getdirnum($filename);  //遞歸,就可以查看所有子目錄                } else {                    $filen++;                 }            }        }        closedir($dir);    }    getdirnum('test');    echo '目錄數為:{$dirn}<br>';//目錄數為:1    echo '文件數為:{$filen}<br>';//文件數為:3?>

      下面來統計在www文件夾下新建的test目錄的大小

    <?php    //統計目錄大小    function dirsize($file) {        $size = 0;        $dir = opendir($file);        while(false !== ($filename = readdir($dir))) {            if($filename!='.' && $filename !='..') {                $filename = $file.'/'.$filename;                if(is_dir($filename)) {                    $size += dirsize($filename);//使用遞歸                } else {                    $size += filesize($filename);                }            }        }        closedir($dir);        return $size;    }echo 'test目錄大小為:'.dirsize('test').'<br>';//test目錄大小為:302?>

    目錄增刪

    mkdir()

      mkdir()函數用于新建目錄 

    bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

    rmdir()

      rmdir()函數用于刪除目錄

    bool rmdir ( string $dirname [, resource $context ] )

      [注意]該目錄必須是空的,而且要有相應的權限。失敗時會產生一個 E_WARNING 級別的錯誤

    unlink()

      unlink()函數用于刪除文件

    bool unlink ( string $filename [, resource $context ] )

      下面來清空test目錄

    <?php    function deldir($dirname) {        //如果是文件,直接刪除即可        if(is_file($dirname)) {            unlink($dirname);        }        $dir = opendir($dirname);        while(FALSE !== ($filename = readdir($dir))) {            if($filename !='.' && $filename!='..') {                $filename = $dirname.'/'.$filename;                if(is_dir($filename)) {                    deldir($filename);//遞歸                }else {                    unlink($filename);//刪除文件                }            }        }        closedir($dir);        if($dirname != 'test'){            rmdir($dirname);//刪除目錄        }    }    deldir('test');?>

    目錄復制

    copy()

      copy()函數用于拷貝文件 

    bool copy ( string $source , string $dest [, resource $context ] )

      [注意]copy()函數不能用于復制目錄

    <?php$file = 'a.txt';$newfile = 'a.bak';copy($file, $newfile);?>

    rename()

      rename()函數用于重命名一個文件或目錄

    bool rename ( string $oldname , string $newname [, resource $context ] )

      [注意]rename()函數具有移動文件或目錄的功能

      下面把www目錄下的test目錄剪貼,命名為t,并移動到d盤目錄下

    <?phprename('test', 'd:/t');?>

      使用rename()只能實現剪切的操作,使用copy()只能復制文件。如果要復制目錄,則需要使用循環和遍歷

    <?php    /**     * $dirsrc  原目錄     * $dirto  目標目錄     */    function copydir($dirsrc, $dirto) {        //如果目錄不存在,則新建一個目錄        if(!file_exists($dirto)) {            mkdir($dirto);        }        $dir = opendir($dirsrc);        while(FALSE !== ($filename = readdir($dir))) {            if($filename != '.' && $filename !='..') {                $srcfile = $dirsrc.'/'.$filename;  //原文件                $tofile = $dirto.'/'.$filename;    //目標文件                if(is_dir($srcfile)) {                    copydir($srcfile, $tofile);  //遞歸處理所有子目錄                }else{                    copy($srcfile, $tofile);//復制文件                }            }        }    }    copydir('test', 'd:/t');?>

    文件操作

    touch()

      touch()函數用來設定文件的訪問和修改時間。如果文件不存在,則會被創建。成功時返回 TRUE, 或者在失敗時返回 FALSE

    bool touch ( string $filename [, int $time = time() [, int $atime ]] )

      參數filename表示要設定的文件名,time表示要設定的時間。如果沒有提供參數 time 則會使用當前系統的時間;atime表示如果給出了這個參數,則給定文件的訪問時間會被設為atime,否則會設置為time。如果沒有給出這兩個參數,則使用當前系統時間

    <?php    touch('abc.txt')?>

    copy()

      copy()函數用于拷貝文件

    bool copy ( string $source , string $dest [, resource $context ] )

      [注意]copy()函數不能用于復制目錄

    <?php$file = 'a.txt';$newfile = 'a.bak';copy($file, $newfile);?>

    rename()

      rename()函數用于重命名一個文件或目錄

    bool rename ( string $oldname , string $newname [, resource $context ] )

      [注意]rename()函數具有移動文件或目錄的功能

    <?phprename('abc.txt', 'd:/cba.txt');?>

    unlink()

      unlink()函數用于刪除文件

    bool unlink ( string $filename [, resource $context ] )
    <?phpunlink('d:/cba.txt');?>

    文件內容

    fopen()

      fopen()函數用于打開文件或者URL,fopen()將 filename 指定的名字資源綁定到一個流上

      fopen() 中 mode 的可能值列表

    mode      說明'r'       只讀方式打開,將文件指針指向文件頭。'r+'      讀寫方式打開,將文件指針指向文件頭。'w'       寫入方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。'w+'      讀寫方式打開,將文件指針指向文件頭并將文件大小截為零。如果文件不存在則嘗試創建之。'a'       寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。'a+'      讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
    <?php    //使用絕對路徑打開file.txt文件,選擇只讀模式,并返回資源$handle    $handle = fopen('/home/rasmus/file.txt', 'r');    //訪問文檔根目錄下的文件,也以只讀模式打開    $handle = fopen(“{$_SERVER['DOCUMENT_ROOT']}/data/info.txt', 'r');    //在 Windows 平臺上,轉義文件路徑中的每個反斜線,或者用斜線,      以二進制和只寫模式組合    $handle = fopen('c:/data/file.gif', 'wb');    //使用相對路徑打開file.txt文件,選擇只讀模式,并返回資源$handle    $handle = fopen('../data/info.txt', 'r');    //打開遠程文件, 使用HTTP協議只能以只讀的模式打開    $handle = fopen('http://www.example.com/', 'r');    //使用FTP協議打開遠程文件,如果FTP服務器可寫,則可以以寫的模式打開    $handle = fopen('ftp://user:[email protected]/somefile.txt', 'w');?>

    fclose()

      fclose()函數用于關閉一個已打開的文件指針

    bool fclose ( resource $handle )
    <?php$handle = fopen('test/a.txt', 'r');fclose($handle);?>

    fwrite()

      fwrite()函數用于寫入文件(可安全用于二進制文件),返回寫入的字符數,出現錯誤時則返回 FALSE

    int fwrite ( resource $handle , string $string [, int $length ] )

      當打開方式為只讀模式時,無法向文件寫入字符

    <?php$fp = fopen('test/a.txt', 'r');echo fwrite($fp, '1');//0echo '<br>';echo fwrite($fp, '23');//0echo '<br>';fclose($fp);?>

      當打開方式為寫模式時,可以向文件寫入字符

    <?php$fp = fopen('test/a.txt', 'w');echo fwrite($fp, '1');//1echo '<br>';echo fwrite($fp, '23');//2echo '<br>';fclose($fp);/*文件內容為123 */?>

      當打開方式為追加模式時,將向文件的尾部追加新的字符

    <?php$fp = fopen('test/a.txt', 'a');echo fwrite($fp, '1');//1echo '<br>';echo fwrite($fp, '23');//2echo '<br>';fclose($fp);/*刷新兩次時,文件內容為123123 */?>

    fgetc()

      fgetc()函數用于從文件指針中讀取字符

      [注意]使用fgetc()函數時,需要在fopen()函數中使用讀模式

    string fgetc ( resource $handle )
    <?php$fp = fopen('test/a.txt', 'r');echo fgetc($fp);//1echo fgetc($fp);//2echo fgetc($fp);//3fclose($fp);?>

    feof()

      feof()函數用于測試文件指針是否到了文件結束的位置

    bool feof ( resource $handle )
    <?php$fp = fopen('test/a.txt', 'r');while(!feof($fp)){    echo fgetc($fp);//123123}fclose($fp);?>

    fgets()

      fgets()函數用于從文件指針中讀取一行

    string fgets ( resource $handle [, int $length ] )

      將test目錄下的a.txt文件內容修改為

    aabbb
    <?php$fp = fopen('test/a.txt', 'r');echo fgets($fp);//'aa'echo fgets($fp);//'bbb'echo fgets($fp);//''fclose($fp);?>

    fread()

      fread()函數用于讀取文件(可安全用于二進制文件)。fread()從文件指針handle讀取最多length個字節。該函數在讀取了length個字節或到達了文件末尾(EOF)時將停止讀取文件

    string fread ( resource $handle , int $length )
    <?php$fp = fopen('test/a.txt', 'r');echo fread($fp,3);//'aa 'fclose($fp);$fp = fopen('test/a.txt', 'r');echo fread($fp,filesize('test/a.txt'));//'aa bbb'fclose($fp);?>

    fseek()

      fseek()函數用于在文件指針中定位,成功則返回 0;否則返回 -1

    int fseek ( resource $handle , int $offset [, int $whence = SEEK_SET ] )    

      將test目錄下的a.txt文件內容修改為'12345'

    <?php$fp = fopen('test/a.txt', 'r');echo fgetc($fp);//'1'fseek($fp,4);echo fgetc($fp);//'5'fclose($fp);?>
    <?php$fp = fopen('test/a.txt', 'r');echo fread($fp,2).'<br>';//12fseek($fp,4);echo fread($fp,2).'<br>';//5fseek($fp,-3,SEEK_END);echo fread($fp,2).'<br>';//34fclose($fp);?>

    ftell()

      ftell()函數用于返回文件指針讀/寫的位置 

    int ftell ( resource $handle )
    <?php$fp = fopen('test/a.txt', 'r');echo ftell($fp);//0fgetc($fp);echo ftell($fp);//1fseek($fp,4);echo ftell($fp);//4fclose($fp);?>

    rewind()

      rewind()函數用于倒回文件指針的位置,將handle的文件位置指針設為文件流的開頭

    bool rewind ( resource $handle )
    <?php$fp = fopen('test/a.txt', 'r');fseek($fp,2);echo ftell($fp);//2rewind($fp);echo ftell($fp);//0?>

    file_get_contents()

      file_get_contents()函數用于將整個文件讀入一個字符串

    string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )
    <?php$homepage = file_get_contents('test/a.txt');echo $homepage;//'12345'?>

      頁面變為百度首頁

    <?php$homepage = file_get_contents('http://www.baidu.com/');echo $homepage;?>

    file_put_contents()

      file_put_contents()函數用于將一個字符串寫入文件

    int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )

      使用該函數和依次調用 fopen(),fwrite() 以及 fclose() 功能一樣

      [注意]默認為寫模式,若設置第三個參數為FILE_APPEND,則變為追加模式

    <?phpfile_put_contents('test/a.txt','abc');?>

    readfile()

      readfile()函數用于讀取文件并寫入到輸出緩沖

    int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )
    <?phpreadfile('http://www.baidu.com/');//頁面中顯示百度首頁?><?phpreadfile('test/a.txt');//頁面中顯示abc?>

    file()

      file()函數用于把整個文件讀入一個數組中,每一行作為一個數組的元素

    array file ( string $filename [, int $flags = 0 [, resource $context ]] )

      將a.txt的文件內容改為每一行一個數字,分別是1、2、3、4、5、6、7、8、9

    <?php$arr = file('test/a.txt',0);echo $arr[0].'<br>';//1echo count($arr);//9?>

    ftruncate()

      ftruncate()函數用于將文件截斷到給定的長度

    bool ftruncate ( resource $handle , int $size )

      [注意]使用ftruncate()函數時,需要使用追加模式。經測試,使用讀模式時無效,使用寫模式時,文件內容被清空

    <?php$fp = fopen('test/a.txt','a');ftruncate($fp,100);?>
    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 本站只有精品 | 成人一级在线 | 国产成人强伦免费视频网站 | 黄色视屏免费在线观看 | 手机黄色小视频 | 国产免费一区二区三区在线能观看 | 久草手机在线视频 | 国产女做a爱免费视频 | 日本高清电影在线播放 | 日本aaa一级片 | 蜜桃成品人免费视频 | 免费观看一级 | 最新午夜综合福利视频 | 亚洲一区二区在线视频 | 91久久国产综合久久91精品网站 | 午夜视频在线观 | 线观看免费完整aaa 久久不雅视频 | 久久17 | 久久国产精品久久久久久久久久 | 黄色视频a级毛片 | 香蕉国产9 | 亚洲成人国产综合 | 中文字幕一区久久 | 久久国产免费视频 | 一区二区三区欧美日韩 | 国产成年免费视频 | 男女羞羞视频在线免费观看 | 一区二区三区视频在线观看 | 99热草| 视频一区二区三区视频 | 热久久成人 | 国产深夜福利视频在线播放 | 中文字幕精品在线播放 | 国产成人高清在线 | 激情在线免费观看 | 黄色大片免费看 | 成人做爰s片免费看网站 | h色在线观看 | 91成人久久| 国产精品av久久久久久网址 | 羞羞视频在线免费 |