久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Java實現把文件及文件夾壓縮成zip

瀏覽:4日期:2022-09-03 15:03:06

最近碰到個需要下載zip壓縮包的需求,于是我在網上找了下別人寫好的zip工具類。但找了好多篇博客,總是發現有bug。因此就自己來寫了個工具類。這個工具類的功能為:

(1)可以壓縮文件,也可以壓縮文件夾

(2)同時支持壓縮多級文件夾,工具內部做了遞歸處理

(3)碰到空的文件夾,也可以壓縮

(4)可以選擇是否保留原來的目錄結構,如果不保留,所有文件跑壓縮包根目錄去了,且空文件夾直接舍棄。注意:如果不保留文件原來目錄結構,在碰到文件名相同的文件時,會壓縮失敗。

(5)代碼中提供了2個壓縮文件的方法,一個的輸入參數為文件夾路徑,一個為文件列表,可根據實際需求選擇方法。

下面直接上代碼

一、代碼

ZipUtils

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;/** * @author Nemo * @version 1.0 * @date 2019/11/5 */public class ZipUtils { private static final int BUFFER_SIZE = 2 * 1024; /** * 壓縮成ZIP 方法1 * @param sourceFile 壓縮文件夾路徑 * @param out 壓縮文件輸出流 * @param KeepDirStructure 是否保留原來的目錄結構,true:保留目錄結構; * false:所有文件跑到壓縮包根目錄下(注意:不保留目錄結構可能會出現同名文件,會壓縮失敗) * @throws RuntimeException 壓縮失敗會拋出運行時異常 */ public static void toZip(File sourceFile, OutputStream out, boolean KeepDirStructure) throws RuntimeException{ ZipOutputStream zos = null ; try { zos = new ZipOutputStream(out); compress(sourceFile,zos,sourceFile.getName(),KeepDirStructure); } catch (Exception e) { throw new RuntimeException('zip error from ZipUtils',e); }finally{ if(zos != null){try { zos.close();} catch (IOException e) { e.printStackTrace();} } } } /** * 壓縮成ZIP 方法2 * @param srcFiles 需要壓縮的文件列表 * @param out 壓縮文件輸出流 * @throws RuntimeException 壓縮失敗會拋出運行時異常 */ public static void toZip(List<File> srcFiles , OutputStream out)throws RuntimeException { long start = System.currentTimeMillis(); ZipOutputStream zos = null ; try { zos = new ZipOutputStream(out); for (File srcFile : srcFiles) {byte[] buf = new byte[BUFFER_SIZE];zos.putNextEntry(new ZipEntry(srcFile.getName()));int len;FileInputStream in = new FileInputStream(srcFile);while ((len = in.read(buf)) != -1){ zos.write(buf, 0, len);}zos.closeEntry();in.close(); } long end = System.currentTimeMillis(); System.out.println('壓縮完成,耗時:' + (end - start) +' ms'); } catch (Exception e) { throw new RuntimeException('zip error from ZipUtils',e); }finally{ if(zos != null){try { zos.close();} catch (IOException e) { e.printStackTrace();} } } } /** * 遞歸壓縮方法 * @param sourceFile 源文件 * @param zos zip輸出流 * @param name 壓縮后的名稱 * @param KeepDirStructure 是否保留原來的目錄結構,true:保留目錄結構; * false:所有文件跑到壓縮包根目錄下(注意:不保留目錄結構可能會出現同名文件,會壓縮失敗) * @throws Exception */ private static void compress(File sourceFile, ZipOutputStream zos, String name, boolean KeepDirStructure) throws Exception{ byte[] buf = new byte[BUFFER_SIZE]; if(sourceFile.isFile()){ // 向zip輸出流中添加一個zip實體,構造器中name為zip實體的文件的名字 zos.putNextEntry(new ZipEntry(name)); // copy文件到zip輸出流中 int len; FileInputStream in = new FileInputStream(sourceFile); while ((len = in.read(buf)) != -1){zos.write(buf, 0, len); } // Complete the entry zos.closeEntry(); in.close(); } else { File[] listFiles = sourceFile.listFiles(); if(listFiles == null || listFiles.length == 0){// 需要保留原來的文件結構時,需要對空文件夾進行處理if(KeepDirStructure){ // 空文件夾的處理 zos.putNextEntry(new ZipEntry(name + '/')); // 沒有文件,不需要文件的copy zos.closeEntry();} }else {for (File file : listFiles) { // 判斷是否需要保留原來的文件結構 if (KeepDirStructure) { // 注意:file.getName()前面需要帶上父文件夾的名字加一斜杠, // 不然最后壓縮包中就不能保留原來的文件結構,即:所有文件都跑到壓縮包根目錄下了 compress(file, zos, name + '/' + file.getName(),KeepDirStructure); } else { compress(file, zos, file.getName(),KeepDirStructure); }} } } } public static void main(String[] args) throws Exception { /** 測試壓縮方法1 */ FileOutputStream fos1 = new FileOutputStream(new File('c:/mytest01.zip')); ZipUtils.toZip(new File('D:/log'), fos1,true); /** 測試壓縮方法2 */ List<File> fileList = new ArrayList<>(); fileList.add(new File('D:/Java/jdk1.7.0_45_64bit/bin/jar.exe')); fileList.add(new File('D:/Java/jdk1.7.0_45_64bit/bin/java.exe')); FileOutputStream fos2 = new FileOutputStream(new File('c:/mytest02.zip')); ZipUtils.toZip(fileList, fos2); }}

二、注意事項

寫該工具類時,有些注意事項說一下:

(1)支持選擇是否保留原來的文件目錄結構,如果不保留,那么空文件夾直接不用處理。

(1)碰到空文件夾時,如果需要保留目錄結構,則直接添加個ZipEntry就可以了,不過就是這個entry的名字后面需要帶上一斜杠(/)表示這個是目錄。

(2)遞歸時,不需要把zip輸出流關閉,zip輸出流的關閉應該是在調用完遞歸方法后面關閉

(3)遞歸時,如果是個文件夾且需要保留目錄結構,那么在調用方法壓縮他的子文件時,需要把文件夾的名字加一斜杠給添加到子文件名字前面,這樣壓縮后才有多級目錄。

三、如何在javaWeb項目中使用該工具類

這個工具類在web項目中的使用場景就是多文件下載,我就簡單說個下載多個excel表格的案例吧。

代碼中的步驟為:

(1)創建一個臨時文件夾

(2)將要下載的文件生成至該臨時文件夾內

(3)當所有文件生成完后,獲取HttpServletResponse獲取設置下載的header

(4)調用工具類的方法,傳入上面生成的臨時文件夾路徑及response獲取的輸出流;這樣就下載出來zip包了

(5)遞歸刪除掉上面生成的臨時文件夾和文件

下面為一個示例代碼的代碼片段,不是完整代碼,簡單看一下代碼中的步驟

import org.apache.commons.io.FileUtils;import java.io.*;/** * 圖片打包下載 * @author: wangzhouchao */ @ApiImplicitParams({ @ApiImplicitParam(name = 'id', value = '申請人id', required = true, dataType = 'Long', paramType = 'query'), }) @ApiOperation(value = '圖片打包下載', notes = '圖片打包下載') @RequestMapping(value = '/downloadPictureList', method = RequestMethod.GET) public void downloadPictureList(TProposerDataVO tProposerDataVO) { long readyStart = System.currentTimeMillis(); // ************* 1. 獲取到存在數據庫中的圖片的url ************* PictureDownloadVO picturesById = tOrderService.getPicturesByProposerDataId(tProposerDataVO.getId()); // 獲取當前類的所在項目路徑 File file = null; try { file = new File(ResourceUtils.getURL('classpath:').getPath()); } catch (FileNotFoundException e) { throw new RuntimeException('獲取根目錄失敗,無法獲取文件目錄!'); } if(!file.exists()) { file = new File(''); } String absolutePath = file.getAbsolutePath(); // 要打包的文件夾列表 String order_number = picturesById.getOrder_number(); String country_name = picturesById.getCountry_name(); String visa_type = picturesById.getVisa_type(); String dirName = order_number + country_name + visa_type; // ************* 2. 創建要壓縮的文件夾 ************* // 根據訂單號+國家名稱+簽證類型創建文件夾 File dirOfOrder = new File(absolutePath, dirName); if(!dirOfOrder.exists()) { dirOfOrder.mkdirs(); } ZipOutputStream zos = null; OutputStream out = null; long readyEnd = System.currentTimeMillis(); System.out.println('準備完成,耗時:' + (readyEnd - readyStart) + ' ms'); try { long downStart = System.currentTimeMillis(); System.out.println('開始下載'); TProposerDataVO vo = picturesById.getProposerDataVO(); // ************* 3. 根據獲取到的圖片的url,把圖片按照想要的文件夾目錄進行下載 ************* // 根據申請人姓名創建文件夾 File proposerFile = new File(dirOfOrder, vo.getReal_name()); if (!proposerFile.exists()) {proposerFile.mkdirs(); } // 下載申請人照片 if (StringUtil.checkNotNull(vo.getPhoto_url())) {System.out.println('開始下載申請人照片');WordExportUtil.downloadHttpUrl(DOMAIN + vo.getPhoto_url(), proposerFile.toString(), File.separator + 'photo.jpg'); } // 下載申請人護照首頁 if (StringUtil.checkNotNull(vo.getPassport_home_page_url())) {System.out.println('開始下載申請人護照照片');WordExportUtil.downloadHttpUrl(DOMAIN + vo.getPassport_home_page_url(), proposerFile.toString(), File.separator + 'passport.jpg'); } // 下載申請人戶口本照片 if (StringUtil.checkNotNull(vo.getResidence_booklet_url())) {System.out.println('開始下載申請人戶口本照片');String[] booklets = vo.getResidence_booklet_url().split(',');// 創建戶口本照片文件夾File bookletsFile = new File(proposerFile, 'hukouben');if (!bookletsFile.exists()) { bookletsFile.mkdirs();}for (int k = 0; k < booklets.length; k++) { WordExportUtil.downloadHttpUrl(DOMAIN + booklets[k], bookletsFile.toString(), File.separator + 'residenceBooklet' + k + '.jpg');} } // 下載申請人身份證照片 if (StringUtil.checkNotNull(vo.getId_card_status()) && vo.getId_card_status() == 0) {System.out.println('開始下載申請人身份證照片');// 創建身份證照片文件夾File idCards = new File(proposerFile, 'idCards');if (!idCards.exists()) { idCards.mkdirs();}if (StringUtil.checkNotNull(vo.getId_card_positive_url())) { WordExportUtil.downloadHttpUrl(DOMAIN + vo.getId_card_positive_url(), idCards.toString(), File.separator + 'idCardPostive.jpg');}if (StringUtil.checkNotNull(vo.getId_card_reverse_url())) { WordExportUtil.downloadHttpUrl(DOMAIN + vo.getId_card_reverse_url(), idCards.toString(), File.separator + 'idCardReverse.jpg');} } // 下載申請人婚姻證明照片 if (StringUtil.checkNotNull(vo.getMar_div_card_url())) {System.out.println('開始下載申請人婚姻證明照片');WordExportUtil.downloadHttpUrl(DOMAIN + vo.getMar_div_card_url(), proposerFile.toString(), File.separator + 'marriage.jpg'); } // 下載申請人輔助資產照片 if (StringUtil.checkNotNull(vo.getAuxiliary_assets_url())) {System.out.println('開始下載申請人輔助資產照片');String[] auxiliarys = vo.getAuxiliary_assets_url().split(',');// 創建輔助資產照片文件夾File auxiliarysFile = new File(proposerFile, 'fuzhuzichan');if (!auxiliarysFile.exists()) { auxiliarysFile.mkdirs();}for (int k = 0; k < auxiliarys.length; k++) { WordExportUtil.downloadHttpUrl(DOMAIN + auxiliarys[k], auxiliarysFile.toString(), File.separator + 'auxiliary' + k + '.jpg');} } // 下載申請人居住證照片 if (StringUtil.checkNotNull(vo.getResidence_permit_url())) {System.out.println('開始下載申請人居住證照片');String[] residences = vo.getResidence_permit_url().split(',');// 創建居住證照片文件夾File residencesFile = new File(proposerFile, 'juzhuzheng');if (!residencesFile.exists()) { residencesFile.mkdirs();}for (int k = 0; k < residences.length; k++) { WordExportUtil.downloadHttpUrl(DOMAIN + residences[k], residencesFile.toString(), File.separator + 'residence' + k + '.jpg');} } // 下載申請人其余補充資料照片 if (StringUtil.checkNotNull(vo.getOther_data_url())) {System.out.println('開始下載申請人其余補充資料照片');String[] others = vo.getOther_data_url().split(',');// 創建其余補充資料照片文件夾File othersFile = new File(proposerFile, 'qitabuchongziliao');if (!othersFile.exists()) { othersFile.mkdirs();}for (int k = 0; k < others.length; k++) { WordExportUtil.downloadHttpUrl(DOMAIN + others[k], othersFile.toString(), File.separator + 'other' + k + '.jpg');} } // 下載申請人證明資料照片 if (StringUtil.checkNotNull(vo.getProve_url())) {System.out.println('開始下載申請人證明資料照片');String[] prove_urls = vo.getProve_url().split(',');// 創建證明資料照片文件夾File proveFile = new File(proposerFile, 'zhengmingziliao');if (!proveFile.exists()) { proveFile.mkdirs();}for (int k = 0; k < prove_urls.length; k++) { WordExportUtil.downloadHttpUrl(DOMAIN + prove_urls[k], proveFile.toString(), File.separator + 'prove' + k + '.jpg');} } long downEnd = System.currentTimeMillis(); System.out.println('下載完成,耗時:' + (downEnd - downStart) + ' ms'); long zipStart = System.currentTimeMillis(); response.setContentType('application/x-zip-compressed'); response.setHeader('Content-disposition', 'attachment;filename=' + StringUtil.getUUID() + '.zip'); out = response.getOutputStream(); zos = new ZipOutputStream(out); // ************* 4. 把要壓縮的文件夾路徑、壓縮文件輸出流傳入到ZipUtils.toZip方法,對文件夾進行壓縮 ************* // 對文件夾進行壓縮,保留原文件夾路徑 ZipUtils.toZip(dirOfOrder, out, true); long zipEnd = System.currentTimeMillis(); System.out.println('壓縮完成,耗時:' + (zipEnd - zipStart) + ' ms'); out.flush(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { throw new RuntimeException('zip error from ZipUtils', e); } finally { if (zos != null) {try { zos.close();} catch (IOException e) { e.printStackTrace();} } if (out != null) {try { zos.close(); out.close();} catch (IOException e) { e.printStackTrace();} } } // ************* 5. 刪除壓縮前準備的中間文件 ************* if (dirOfOrder != null) { try {FileUtils.deleteDirectory(dirOfOrder);System.out.println('中間文件已刪除'); } catch (IOException e) {e.printStackTrace();System.out.println('中間文件刪除失敗'); } } }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 国产精品久久九九 | 日韩一区精品 | 亚洲不卡在线 | 日韩视频在线观看一区 | 久久久国产一区 | 亚洲午夜成激人情在线影院 | 一区二区三区国产亚洲网站 | 国产成人精品综合 | 免费福利视频一区二区三区 | 免费午夜电影 | 天天干夜夜操 | 99精品全国免费观看视频软件 | 成人在线看片 | 成人午夜影院 | 国产精品成人3p一区二区三区 | 成人免费在线观看视频 | 国产在线一区二区 | 一区综合 | av在线国产精品 | 国产精品久久久久久久午夜片 | 欧美日韩一级二级三级 | 亚洲精品不卡 | 中国大陆高清aⅴ毛片 | 美女国产精品 | 欧美日韩一区二区在线观看 | 欧美日韩福利视频 | 在线国产一区 | 性色在线视频 | 亚洲专区欧美 | 欧美一级二级三级 | v888av成人| 欧美一级淫片007 | 91成人免费在线观看 | 亚洲网在线 | 亚洲国产精品一区二区第一页 | 久久一级 | 中文久久| 中文日韩av | 做a视频免费观看 | 中文字幕免费在线 | 国产视频一区二区 | 国产精品成人一区二区三区 | 日韩免费在线观看视频 | 亚洲国产精品福利 | 亚洲一区在线视频 | 国产精品二区三区 | 亚洲国产精品第一区二区 | 亚洲每日更新 | 亚洲性爰| 国产精品国产精品国产专区不片 | 午夜影院网站 | 亚洲国产天堂久久综合 | 日本一区二区高清视频 | 国产精品综合久久 | 91视频播放| 精品久久久久久国产 | 久操综合 | 羞羞视频在线免费 | 久久久久久久av | 伊人网在线免费观看 | 91麻豆精品国产91久久久久久 | 成人欧美亚洲 | 亚洲欧美日韩在线一区 | 亚洲综合无码一区二区 | 久久精品这里只有精品 | 国产亚洲一区二区精品 | 色综合天天天天做夜夜夜夜做 | 亚洲欧美日韩在线一区二区 | 国产高清免费 | 1区2区3区视频 | 看毛片网站 | 免费亚洲成人 | 欧洲国产伦久久久久久久 | 精品一区二区三 | 国产视频久久 | 久久aⅴ乱码一区二区三区 91综合网 | 自拍视频在线观看免费 | 久久久久久国产免费视网址 | 奇米影视7777| 亚洲国产高清在线 | av解说在线精品 | 国产免费一区二区三区网站免费 | 国产精品二区一区二区aⅴ污介绍 | 国产精品高潮呻吟 | 亚州成人| 国产精品永久免费自在线观看 | 欧美成人精品一区二区 | 亚洲一区 日韩精品 中文字幕 | 国产精品成人一区二区三区 | 欧美成人高清视频 | 亚洲人成在线观看 | 蜜月久综合久久综合国产 | 99久久99热这里只有精品 | 国产伊人一区 | 国产在线小视频 | 国产 日韩 欧美 在线 | 亚洲美乳中文字幕 | 国产女人爽到高潮免费视频 | 欧美a在线 | 亚洲视频在线观看免费 | 日韩中文不卡 | 在线中文字幕日韩 | 久久日本视频 | 国产伦精品一区二区三区在线 | 国产男女视频在线观看 | 日本视频免费高清一本18 | 日本久久网 | 国产精品久久久久久久久久妞妞 | 久久99精品一区二区三区三区 | 国产美女自拍视频 | 国产精品免费看 | 亚洲国产午夜 | 久久久精品综合 | 精品欧美乱码久久久久久 | 亚洲精品久久久久久一区二区 | 欧美一级电影免费观看 | 国产精品自产拍在线观看 | 四季久久免费一区二区三区四区 | 在线视频亚洲 | 欧美一级片毛片免费观看视频 | 亚洲嫩草| 在线亚洲一区 | 自拍偷拍专区 | 精品九九 | 成人午夜网| 成人精品在线观看 | 黑人xxx视频| 亚洲二区在线 | 2012中文版免费观看 | 久久精品极品 | 麻豆久久久久久 | 久久国内精品 | 日韩中文字幕在线 | 免费看的毛片 | 亚洲午夜成激人情在线影院 | 亚洲成人av在线 | 日本aa级毛片免费观看 | 91亚洲成人 | 精品亚洲在线 | 精品视频一区二区三区 | 中文在线a在线 | 亚洲精品二区 | 色综合久久久久 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 日韩精品一区二区三区在线播放 | 日本免费视频 | 丝袜+亚洲+另类+欧美+变态 | 亚洲国产成人久久综合一区,久久久国产99 | 国产中文字幕在线 | 精品国产精品三级精品av网址 | 蜜桃comaaa| 久久草草影视免费网 | 亚洲精品国产区 | 日本在线小视频 | 日本不卡免费新一二三区 | 免费国产一区二区 | 国产精品大全 | www.99re| 精品三级在线观看 | 伊人网址| 91精品国产一区二区三区香蕉 | 全黄大全大色全免费大片 | www312aⅴ欧美在线看 | 精品国产一区二区三区四区 | 亚洲午夜电影 | 三级在线观看 | 久久精品国产视频 | 在线日韩欧美 | 成人免费毛片嘿嘿连载视频 | 国产亚洲精品综合一区91555 | 欧美中文在线 | 国产a久久精品一区二区三区 | 久久99国产精品久久99大师 | 日韩成人在线免费视频 | 日韩av入口 | 欧美日韩精品一区二区三区在线观看 | 亚洲精品99 | 91视频在线免费观看 | 国产精品99久久免费观看 | 国产综合精品一区二区三区 | 亚洲精品乱码久久久久久麻豆不卡 | 男女免费在线观看 | 黄色网页大全 | 欧美日韩精品在线 | 国产玖玖 | 欧美一级黄色片 | 国产精品自拍av | 久久久蜜桃一区二区人 | 波多野结衣一区二区三区四区 | www.久久久久 | 国产男女视频在线观看 | 日韩精品中文字幕在线观看 | 国产视频精品在线 | 久久av网 | 日产久久 | 91社区在线观看 | 欧美性猛交一区二区三区精品 | 久久精品成人 | 99热国产在线观看 | 天天操操| 欧美激情一区二区 | 91精品久久久久久久久久 | 在线无码| 精品亚洲一区二区三区 | 毛片免费观看网址 | 成人午夜精品久久久久久久3d | 欧美视频一区二区 | 午夜小电影 | 黄毛片网站 | 91麻豆精品国产91久久久更新时间 | 香蕉久久av一区二区三区 | 久久不卡| 国产精品视频导航 | 精品无码久久久久国产 | 成人国产在线 | 亚洲不卡在线观看 | 狠狠躁夜夜躁人人爽天天天天97 | 国产精品3区 | 国产精品成人在线 | 日韩手机在线 | 欧美日韩一区二区三区在线观看 | 国产在线专区 | 亚洲精品在线免费播放 | 亚洲在线视频 | 中国国产一级毛片 | 欧美福利电影在线观看 | 伊人伊人伊人 | 最新国产精品 | 精品一二区 | 国产激情不卡 | 精品久久久久一区二区国产 | www一起操 | 亚洲精品一区二区 | 国产精品一二三区 | 精品久久久久久久久久久久 | 欧美日韩在线观看一区二区 | 蜜桃日韩| 精品一区二区免费视频 | 欧美日韩综合视频 | 国产精品一区二区三区在线免费观看 | 97成人在线视频 | 成人在线精品 | 精品免费久久久久久久苍 | 欧美xxxx网站 | 99av| 国产91精选 | 亚洲欧美精品 | 日本一区二区成人 | 国产色 | 久久精品视| 人人射人人草 | 久久久久久久av | 精品一区二区在线播放 | 日韩一二| 久久综合九九 | 国产一区二区视频在线 | 国产精品久久久久久久久久久久久 | 日韩精品视频免费看 | 精品国产乱码久久久久久蜜柚 | 亚洲在线播放 | 国产区视频| 国产精品久久久久久久久久免费看 | 伊人久麻豆社区 | av不卡电影在线观看 | av大片 | 激情五月综合 | 色综合久 | 久久国产精品久久 | 亚洲36d大奶网 | 亚洲国产成人在线 | 一区二区色 | 欧美精品一区在线 | www.99精品 | 欧美一区 | 精品视频一区二区三区四区 | 精品毛片 | 国产高清第一页 | 日本在线播放 | 欧美一区二区三 | 亚洲性网 | 久久成人国产精品 | 欧美久久久久久久久久久久久久 | 日韩高清国产一区在线 | 国产传媒毛片精品视频第一次 | 探花在线观看 | 91大神免费观看 | 日韩综合一区二区 | 爱爱视频网站 | 涩久久| 在线视频一区二区三区 | 亚洲欧洲成人 | 亚洲免费视频在线观看 | 国产猛男猛女超爽免费视频网站 | 伊人艹| 国产视频久久久久久久 | 日韩免费一区 | 国产成人网 | 在线观看91视频 | 久久一区二区视频 | 国产黄色在线免费看 | 一区二区精品 | 龙珠z国语291集普通话 | 欧美综合国产 | 中文字幕一区二区三区四区不卡 | 日韩电影在线一区 | 一级欧美一级日韩片 | 噜噜噜视频在线观看 | 武道仙尊动漫在线观看 | 国产91视频一区二区 | 在线国产一区 | 亚洲精品视频一区二区三区 | 久久综合色88 | 在线观看成人网 | 日本黄色片免费 | 成人性视频在线 | 99久久久99久久国产片鸭王 | 成人国产精品久久久 | 大胆裸体gogo毛片免费看 | 久久久久网站 | 午夜久久久 | 毛片91 | 99国产视频| 日本一区二区精品 | 国产毛片网站 | 日本一级毛片视频 | 久久人人爽人人爽 | 国产精品2019 | 精品999| 亚洲精品国产偷自在线观看 | 国产乱码精品一区二区三区中文 | 亚洲午夜精品 | 成人免费小视频 | 夜夜爽网址 | 国产99久久久久久免费看农村 | 求av网站 | 精品久久久99 | 亚洲欧美一区二区三区视频 | 97久久久 | 综合久久网| av福利网站 | 一级毛片免费在线 | 国产精品久久久久久亚洲调教 | 国产亚州av | 久久久艹 | 狠狠躁夜夜躁人人爽视频 | 中文成人在线 | 欧美成人性生活 | 日韩中文在线观看 | 不卡视频一区二区三区 | 成人在线免费视频 | 天天插天天操天天干 | 中文字幕亚洲欧美 | 亚洲网站免费观看 | aaa在线| 亚洲 中文 欧美 日韩在线观看 | 欧美日韩国产一区二区三区不卡 | 国产精品精品视频一区二区三区 | 新99热| a级片视频在线观看 | 日韩精品视频在线播放 | 君岛美绪一区二区三区在线视频 | 后进极品白嫩翘臀在线视频 | 波多野结衣在线网址 | 欧美综合在线观看 | 欧美综合婷婷 | 精品亚洲一区二区三区 | 91久久久久久| 成人影视网 | 99久久99| 久在线 | 亚洲福利 | 天天网| 国产乱码精品一区二区三区忘忧草 | 国产精品美女久久久久久久久久久 | 亚洲天堂中文字幕 | 黄色资源网站 | 久久久久一区二区三区 | 噜噜噜天天躁狠狠躁夜夜精品 | 狠狠撸在线视频 | 国产免费自拍 | 国产视频黄在线观看 | 国产ts余喵喵和直男多体位 | 亚洲免费不卡视频 | 婷婷精品 | 日韩高清不卡一区二区三区 | 91电影在线 | 精品一二区 | 毛片在线视频 | 成人av片在线观看 | 黄网在线| 亚洲成a人v欧美综合天堂麻豆 | 操一草| 97国产在线视频 | 91精品视频在线 | 在线观看免费的av | 亚洲 欧美 自拍偷拍 | 成人av一区二区三区 | 久草精品在线 | 高清国产午夜精品久久久久久 | 亚洲网站在线免费观看 | 日本一区二区成人 | 在线国产一区二区 | 国产黄色精品 | 亚洲视频区 | 国产精产国品一二三产区视频 | www.国产精品 | 国产色播| 国产精品美女久久久久aⅴ国产馆 | 国产精品久久久久久久福利院 | 国内自拍视频在线观看 | 黄色在线免费观看 | 日韩成人av网站 | 欧美日韩中文字幕 | 亚洲一区二区在线免费观看 | 性视频网 | 91视频一88av| 欧美日韩视频在线第一区 | 欧美成人免费网站 | 亚洲第一中文字幕 | 91精品一区二区三区久久久久久 | 亚洲精品在线免费观看视频 | 国产欧美一区二区精品性色 | 一区二区三区在线观看免费 | 2021最新热播中文字幕-第1页-看片视频 青青青久草 | 亚洲欧美日韩国产综合精品二区 | 欧美在线小视频 | 99国产精品久久久久久久久久 | av性色| 日韩久久网站 | 免费成人在线观看视频 | 国产精品18hdxxxⅹ在线 | 国产精品欧美一区二区三区 | 91精品久久久久久久久久 | 天天摸夜夜摸爽爽狠狠婷婷97 | 国产免费无遮挡 | 精品国产一级片 | 五月婷婷丁香在线 | 精品国产欧美一区二区 | 国产精品.xx视频.xxtv | 冷水浴在线观看 | 日韩在线免费观看av | 免费成人av在线 | 国产色在线 | jizzjizzjizz亚洲女 | 精品亚洲永久免费精品 | 欧美精品成人一区二区三区四区 | 久久福利| 精品国产乱码久久久久久闺蜜 | 国产福利在线 | 久久久综合网 | 国产成人精品免高潮在线观看 | www.久草 | 国产xxx在线观看 | 一本一道久久久a久久久精品91 | 国产综合视频在线播放 | 日本久久网站 | 国产色 | 91精品国产乱码久久久久久久久 | 免费看国产片在线观看 | 国产亚洲一区在线 | 亚洲视频在线观看视频 | 亚洲综合无码一区二区 | 一区二区三区 在线 | 一区二区精品视频 | 中文字幕一区二区三区四区 | 91丁香| 亚洲久草 | 日韩久久久久 | 精品一区二区免费视频 | 久久99精品久久久久国产越南 | 亚洲成av人片在线观看无码 | 国产精品无码专区在线观看 | av国产精品 | 精品在线一区二区 | 男人的天堂久久精品 | 黄色大片成人 | 成人一区二区三区在线观看 | 在线一区观看 | 亚洲欧美日韩在线一区二区 | 爽死777影院 | 日韩中文字幕免费在线 | 精品视频一区二区三区 | 久久久久久久国产精品视频 | 91中文| 2019天天干夜夜操 | 成人精品一区二区三区中文字幕 | 成人av小说| a√天堂资源在线 | 成人免费小视频 | 亚洲一区二区高清视频 | 人人草在线观看视频 | 欧美日韩综合精品 | 国产精品s色 | 亚洲国产成人在线 | 日本不卡精品 | 日韩美女av在线 | 男人av网 | 精品96久久久久久中文字幕无 | av一区二区三区 | 日本三级视频 | 国产精品毛片一区二区三区 | 成人爽a毛片一区二区免费 美女高潮久久久 | 国产精品视频一区二区免费不卡 | 色综合网站| 热久久久久| 理论片免费在线观看 | 亚欧毛片 | 色一情一乱一伦一区二区三区 | 国产精品亚洲视频 | 久久爱综合网 | 精品一区二区三区三区 | 午夜精品久久久久久久男人的天堂 | 奇米影视奇米色777欧美 | 国产乱人伦av在线a jizz久久久 www.亚洲 | 欧美一级网| 亚洲欧美中文日韩在线v日本 | 国产精品日韩三级 | 亚洲网色 | 国产成人在线电影 | 久久人人爽人人爽 | 91新视频| 精品国产一区二区三区成人影院 | 国产999精品久久久久久 | 99精品视频一区二区三区 | 亚洲天堂久久 | 国内久久精品 | 日韩中文字幕在线视频 | 国产激情视频在线 | 美女久久久久 | 五月婷婷激情 | 成人日韩| 久久久www成人免费精品 | 99精品欧美一区二区三区综合在线 | 精品视频久久 | 成av人片在线观看www | 亚洲一区二区三区四区五区中文 | 久草免费福利 | 亚洲高清视频一区二区三区 | 国产特黄一级 | 色婷婷国产精品免费网站 | 国产精品久久国产精品 | 国产精品视频一二三区 | 国产99久久精品 | 91精品国产综合久久婷婷香蕉 | 日韩免费视频中文字幕 | 91精品在线播放 | 亚洲一区二区三区免费 | 国产伦精品一区二区三区四区视频 | 欧美国产日韩一区 | 成人不卡| 876av国产精品电影 | 亚洲视频在线播放 | 婷婷av网站 | 狠狠干欧美| 天天干人人| 亚洲精品一区二三区不卡 | 亚洲一区国产视频 | 日韩理论在线 | 天堂一区二区三区四区 | 日韩精品一区二区三区在线观看 | 国外成人在线视频网站 | 99国产精品99久久久久久 | 精品一区不卡 | 国产精品久久久久久久久小说 | 免费成人av在线 | 欧美一区二区在线 | www国产xxx | 欧美日韩电影一区二区 | 国产精选一区二区三区不卡催乳 | 久久国产亚洲精品 | 亚洲欧美中文日韩v在线观看 | 成人免费共享视频 | 国产精品久久久久久久浪潮网站 | 成人福利 | 成人一级| 色婷婷亚洲一区二区三区 | 日韩在线高清视频 | 爱免费视频 | baoyu133. con永久免费视频 | 中文字幕亚洲一区二区va在线 | 久久久成人av | 波多野结衣先锋影音 | 九九热精品视频 | 在线观看成人小视频 | 欧美日韩综合在线 | 亚洲日韩中文字幕一区 | 在线观看亚洲一区二区三区 | 国产福利视频在线观看 | 国产日韩成人 | 精品免费久久久久久久苍 | 自拍偷拍一区二区三区 | 国产一区二区精品在线观看 | 四虎在线视频 | 黄色影视在线免费观看 | 欧洲成人在线视频 | 久久精品国产亚洲一区二区三区 | 久久精品国产91精品亚洲高清 | 国产精品色哟哟哟 | 97国产一区二区精品久久呦 | 亚洲第一区在线 | 精品亚洲永久免费精品 | www.国产.com| 亚洲永久 | 免费一级欧美在线观看视频 | 精品久久精品 | 亚洲精品一区二三区不卡 | 在线免费黄 | 国产美女在线播放 | 在线一区观看 | 欧美日韩一区二区在线观看 | 午夜精品一区 | 国产在线二区 | 欧美一区亚洲二区 | 日本亚洲欧美 | 亚洲欧美高清 |