日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

瀏覽:32日期:2022-08-14 09:33:24
一、Java IO流總覽

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

二、File類2.1 常用API

package pkg1;import java.io.File;import java.io.IOException;/** * @author Administrator * @date 2021/4/2 */public class FileDemo { public static void main(String[] args) {// 了解構(gòu)造函數(shù),可查看APIFile file = new File('d:javaiocook');// 設(shè)置分隔符,不同系統(tǒng)也可以認(rèn)識//File file=new File('d:'+File.separator);//System.out.println(file.exists());if (!file.exists()) { file.mkdirs();} else { file.delete();}// 是否是一個目錄,如果是目錄返回true,如果不是目錄或目錄不存在返回falseSystem.out.println(file.isDirectory());// 如果是一個文件System.out.println(file.isFile());//File file2 = new File('d:javaio日記1.txt');File file2 = new File('d:javaio', '日記1.txt');if (!file2.exists()) { try {file2.createNewFile(); } catch (IOException e) {e.printStackTrace(); }} else { file2.delete();}// 常用File對象的apiSystem.out.println(file);// file.toString()的內(nèi)容System.out.println(file.getAbsolutePath());System.out.println(file.getName());System.out.println(file2.getName());System.out.println(file.getParent());System.out.println(file2.getParent());System.out.println(file.getParentFile().getAbsolutePath()); }}

測試結(jié)果:

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

其他API:

package pkg1;import java.io.*;import java.util.RandomAccess;/** * @author Administrator * @date 2021/4/7 */class FileDemo2 { public static void main(String[] args) {File file = new File('d:javaioexample');if (!file.exists()) { file.mkdir();}/*String[] fileNames = file.list(new FilenameFilter() { @Override public boolean accept(File dir, String name) {System.out.println('文件是:'+dir + '' + name);return name.endsWith('java'); }});for (String fileName : fileNames != null ? fileNames : new String[0]) { System.out.println(fileName);}*//*File[] files = file.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) {System.out.println('文件是:' + dir + '' + name);return false; }});for (File fileName : files) { System.out.println(fileName.toString());}*/File[] files = file.listFiles(new FileFilter() { @Override public boolean accept(File pathname) {System.out.println(pathname);return false; }});for (File fileName : files) { System.out.println(fileName.toString());} }}

測試:

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

2.2 遍歷目錄

package pkg2;import java.io.File;/** * 列出File的一些常用操作,如過濾、遍歷 */public class FileUtils { /** * 列出指定目錄(包括其子目錄)下的所有文件 */ public static void listDirectory(File dir) throws IllegalAccessException {if (!dir.exists()) { throw new IllegalArgumentException('目錄:' + dir + '不存在');}if (!dir.isDirectory()) { throw new IllegalArgumentException(dir + '不存在');}// list()用于列出當(dāng)前目錄下的子目錄(不包含子目錄下的內(nèi)容)和文件。返回的是字符串?dāng)?shù)組。/*String[] fileNames = dir.list();for (String string : fileNames) { System.out.println(dir + '' + string);}*/// 若要遍歷子目錄下的內(nèi)容,就要構(gòu)造成File對象進(jìn)行遞歸操作。File提供了直接返回File對象的APIFile[] files = dir.listFiles();//返回直接子目錄(文件)的抽象/*for (File file : files) { System.out.println(file);}*/if (files != null && files.length > 0) { for (File file : files) {if (file.isDirectory()) { // 遞歸 listDirectory(file);} else { System.out.println(file);} }} }}

測試類:

package pkg2;import java.io.File;public class FileUtilsTest { public static void main(String[] args) throws IllegalAccessException {FileUtils.listDirectory(new File('d:javaio')); }}

測試結(jié)果:

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

三、RandomAccessFile類

package pkg3;import java.io.*;import java.util.Arrays;public class RafDemo { public static void main(String[] args) throws IOException {// 若沒有指定路徑,則表示相對路徑,即項(xiàng)目所在路徑。File demo = new File('demo');if (!demo.exists()) { demo.mkdir();}File file = new File(demo, 'raf.dat');if (!file.exists()) { file.createNewFile();}RandomAccessFile raf = new RandomAccessFile(file, 'rw');// 查看指針位置System.out.println(raf.getFilePointer());// 0raf.writeInt(’A’);// 只寫了一個字節(jié)System.out.println(raf.getFilePointer());raf.writeInt(’B’);int i = 0x7fffffff;// 用write方法每次只能寫一個字節(jié),如果要把i寫進(jìn)去就要寫4次raf.writeInt(i >>> 24);//高8位raf.writeInt(i >>> 16);raf.writeInt(i >>> 8);raf.writeInt(i);// 低8位System.out.println(raf.getFilePointer());// 直接寫一個int ,與上述4步操作等效raf.writeInt(i);String s = '中';byte[] gbk = s.getBytes('gbk');raf.write(gbk);System.out.println('raf長度:' + raf.length());// 讀文件,必須把指針移到頭部raf.seek(0);// 一次性讀取,把文件中的內(nèi)容都讀到字節(jié)數(shù)組匯總byte[] buf = new byte[(int) raf.length()];raf.read(buf);System.out.println(Arrays.toString(buf));// 轉(zhuǎn)為字符串/*String s1=new String(buf,'utf-8');System.out.println(s1);*/for (byte b : buf) { System.out.print(Integer.toHexString(b & 0xff) + ' ');}raf.close(); }}

測試結(jié)果:

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

四、字節(jié)流4.1 FileInputStream

package pkg4;import java.io.*;public class IOUtil { /** * 讀取指定文件內(nèi)容, 按照十六進(jìn)制輸出到控制臺, * 且每輸出10個byte換行 * * @param fileName */ public static void printHex(String fileName) throws IOException {// 把文件作為字節(jié)流進(jìn)行操作FileInputStream fis = new FileInputStream(fileName);int b;int i = 1;while ((b = fis.read()) != -1) { if (b <= 0xf) {// 單位數(shù)前補(bǔ)0System.out.print('0'); } // 將整型b轉(zhuǎn)換為16進(jìn)制表示的字符串 System.out.print(Integer.toHexString(b) + ' '); if (i++ % 10 == 0) {System.out.println(); }}fis.close(); } public static void printHexByByteArray(String fileName) throws IOException {FileInputStream fis = new FileInputStream(fileName);/*byte[] buf = new byte[20 * 1024];//從fis中批量讀取字節(jié),放入到buf字節(jié)數(shù)組中,從第0個位置開始放,最多放buf.length個,返回的是讀到的字節(jié)個數(shù)int bytes = fis.read(buf, 0, buf.length);// 一次性讀完,說明字節(jié)數(shù)組足夠大int j = 1;for (int i = 0; i < bytes; i++) { if (buf[i] <= 0xf) {System.out.print('0'); } System.out.println(Integer.toHexString(buf[i]) + ' '); if (j++ % 10 == 0) {System.out.println(); }}*/// 當(dāng)字節(jié)數(shù)組容量不夠,一次讀不完時byte[] buf = new byte[8 * 1024];int bytes = 0;int j = 1;while ((bytes = fis.read(buf, 0, buf.length)) != -1) { for (int i = 0; i < bytes; i++) {// byte是8位,int類型是32位,為了避免數(shù)據(jù)轉(zhuǎn)換錯誤,通過&0xff將高24位清零System.out.print(Integer.toHexString(buf[i] & 0xff) + ' ');if (j++ % 10 == 0) { System.out.println();} }}fis.close(); } /** * 文件拷貝操作 -> 字節(jié)批量讀取式拷貝,效率最優(yōu) */ public static void copyFile(File srcFile, File destFile) throws IOException {if (!srcFile.exists()) { throw new IllegalArgumentException('文件:' + srcFile + '不存在');}if (!srcFile.isFile()) { throw new IllegalArgumentException(srcFile + '不是文件');}FileInputStream fis = new FileInputStream(srcFile);FileOutputStream fos = new FileOutputStream(destFile);byte[] buf = new byte[8 * 1024];int b;while ((b = fis.read(buf, 0, buf.length)) != -1) { fos.write(buf, 0, b); fos.flush();//最好加上這個}fis.close();fos.close(); } /** * 用帶緩沖的字節(jié)流,進(jìn)行文件拷貝,效率居中 */ public static void copyFileByBuffer(File srcFile, File destFile) throws IOException {if (!srcFile.exists()) { throw new IllegalArgumentException('文件:' + srcFile + '不存在');}if (!srcFile.isFile()) { throw new IllegalArgumentException(srcFile + '不是文件');}BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));int c;while ((c = bis.read()) != -1) { bos.write(c); // 刷新緩沖區(qū)。不能省略,否則無法寫入 bos.flush();}bis.close();bos.close(); } /** * 文件拷貝操作 -> 單字節(jié),不帶緩沖式拷貝,效率最差 */ public static void copyFileByByte(File srcFile, File destFile) throws IOException {if (!srcFile.exists()) { throw new IllegalArgumentException('文件:' + srcFile + '不存在');}if (!srcFile.isFile()) { throw new IllegalArgumentException(srcFile + '不是文件');}FileInputStream fis = new FileInputStream(srcFile);FileOutputStream fos = new FileOutputStream(destFile);int b;while ((b = fis.read()) != -1) { fos.write(b); fos.flush();}fis.close();fos.close(); }}

測試類:

package pkg4;import java.io.IOException;public class IOUtilTest1 { public static void main(String[] args) {try { IOUtil.printHex('d:javaioFileUtils.java');} catch (IOException e) { e.printStackTrace();} }}4.2 FileOutputStream

package pkg5;import pkg4.IOUtil;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class FileOutDemo { public static void main(String[] args) throws IOException {// 如果該文件不存在,則直接創(chuàng)建,如果存在,則刪除后創(chuàng)建。若要在后面追加內(nèi)容,參數(shù)中加一個trueFileOutputStream fos = new FileOutputStream('demo/out.dat');// 寫入A的低8位fos.write(’A’);fos.write(’B’);// write只能寫8位,那么寫一個int需要4次,每次8位int a = 10;fos.write(a >>> 24);fos.write(a >>> 16);fos.write(a >>> 8);fos.write(a);byte[] gbk = '中國'.getBytes('gbk');fos.write(gbk);fos.close();IOUtil.printHex('demo/out.dat'); }}

測試類:

package pkg5;import pkg4.IOUtil;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.IOException;public class IOUtilTest3 { public static void main(String[] args) {try { IOUtil.copyFile(new File('d:javaioabc.txt'), new File('d:javaioabc1.txt'));} catch (IOException e) { e.printStackTrace();} }}4.3 DataInputStream 、DataOutputStream

輸入流:

package pkg6;import pkg4.IOUtil;import java.io.DataInputStream;import java.io.FileInputStream;import java.io.IOException;public class DisDemo { public static void main(String[] args) throws IOException {String file = 'demo/dos.dat';IOUtil.printHex(file);DataInputStream dis = new DataInputStream(new FileInputStream(file));int i = dis.readInt();System.out.println(i);i = dis.readInt();System.out.println(i);long l = dis.readLong();System.out.println(l);double d = dis.readDouble();System.out.println(d);String s = dis.readUTF();System.out.println(s);dis.close(); }}

輸出流:

package pkg6;import pkg4.IOUtil;import java.io.DataOutputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class DosDemo { public static void main(String[] args) throws IOException {String file = 'demo/dos.dat';DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));dos.writeInt(10);dos.writeInt(-10);dos.writeLong(10l);dos.writeDouble(10.5);// 采用utf-8寫入dos.writeUTF('中國');// 采用utf-16be寫入dos.writeChars('中國');dos.close();IOUtil.printHex(file); }}4.4 字節(jié)緩沖流

工具類在4.1小節(jié)的IOUtil.java中。

測試類:

package pkg7;import pkg4.IOUtil;import java.io.File;import java.io.IOException;public class IOUtilTest4 { public static void main(String[] args) {// 效率最高try { long start = System.currentTimeMillis(); IOUtil.copyFile(new File('d:javaioAlpha.mp3'), new File('d:javaioAlpha1.mp3')); long end = System.currentTimeMillis(); System.out.println('耗時1:' + (end - start));} catch (IOException e) { e.printStackTrace();}// 效率居中try { long start = System.currentTimeMillis(); IOUtil.copyFileByBuffer(new File('d:javaioAlpha.mp3'), new File('d:javaioAlpha2.mp3')); long end = System.currentTimeMillis(); System.out.println('耗時2:' + (end - start));} catch (IOException e) { e.printStackTrace();}// 效率最差try { long start = System.currentTimeMillis(); IOUtil.copyFileByByte(new File('d:javaioAlpha.mp3'), new File('d:javaioAlpha3.mp3')); long end = System.currentTimeMillis(); System.out.println('耗時3:' + (end - start));} catch (IOException e) { e.printStackTrace();} }}五、字符流5.1 InputStreamReader、OutputStreamWriter

package pkg8;import java.io.*;public class IsrAndOswDemo { public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream('d:javaioaa.txt');InputStreamReader isr = new InputStreamReader(fis);//未指定編碼格式,即按照項(xiàng)目默認(rèn)編碼操作FileOutputStream fos = new FileOutputStream('d:javaioaa.txt');OutputStreamWriter osw = new OutputStreamWriter(fos);//未指定編碼格式,即按照項(xiàng)目默認(rèn)編碼操作/*int c;while ((c=isr.read())!=-1){ System.out.print((char)c);}*//*批量讀取。放入buffer這個字節(jié)數(shù)組,從第0個位置開始放,最多放buffer.length個,返回讀到的字符個數(shù)。 */char[] buffer = new char[8 * 1024];int c;while ((c = isr.read(buffer, 0, buffer.length)) != -1) { String s = new String(buffer, 0, c); System.out.print(s); /*osw.write(buffer,0,c); osw.flush();*/}isr.close();osw.close(); }}5.2 FileReader、FileWriter

package pkg8;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class FrAndFwDemo { /** * 注意:FileReader、FileWriter不能指定編碼方式 */ public static void main(String[] args) throws IOException {FileReader fr = new FileReader('d:javaioaa.txt');// 指定參數(shù),也可以追加內(nèi)容:FileWriter(String fileName, boolean append)FileWriter fw = new FileWriter('d:javaiobb.txt');char[] buffer = new char[8 * 1024];int c;while ((c = fr.read(buffer, 0, buffer.length)) != -1) { fw.write(buffer, 0, c); fw.flush();}fr.close();fw.close(); }}5.3 BufferedReader、BufferedWriter、PrintWriter

package pkg9;import java.io.*;public class BrAndBwOrPwDemo { public static void main(String[] args) throws IOException {// 對文件進(jìn)行讀寫操作BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream('d:javaioaa.txt')));//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream('d:javaiocc.txt')));// PrintWriter可以替換BufferedWriterPrintWriter pw = new PrintWriter('d:javaiocc.txt');String line;while ((line = br.readLine()) != null) { // 一次讀一行,不能識別換行 System.out.println(line); /*bw.write(line); // 手動給出換行 bw.newLine(); bw.flush();*/ pw.println(line); pw.flush();}br.close();//bw.close();pw.close(); }}六、對象的序列化、反序列化6.1 transient關(guān)鍵字、序列化、反序列化

實(shí)體類:

package pkg10;import java.io.Serializable;public class Student implements Serializable { private String stuNo; private String stuName; // 該元素不會 進(jìn)行JVM默認(rèn)的序列化,但可以手動序列化 private transient int stuAge; public Student(String stuNo, String stuName, int stuAge) {this.stuNo = stuNo;this.stuName = stuName;this.stuAge = stuAge; } public String getStuNo() {return stuNo; } public void setStuNo(String stuNo) {this.stuNo = stuNo; } public String getStuName() {return stuName; } public void setStuName(String stuName) {this.stuName = stuName; } public int getStuAge() {return stuAge; } public void setStuAge(int stuAge) {this.stuAge = stuAge; } @Override public String toString() {return 'Student{' +'stuNo=’' + stuNo + ’’’ +', stuName=’' + stuName + ’’’ +', stuAge=' + stuAge +’}’; } /** * 序列化 */ private void writeObject(java.io.ObjectOutputStream s) throws java.io.IOException {// 把JVM能默認(rèn)序列化的元素進(jìn)行序列化操作s.defaultWriteObject();// 手動完成stuAge的序列化s.writeInt(stuAge); } /** * 反序列化 */ private void readObject(java.io.ObjectInputStream s) throws java.io.IOException, ClassNotFoundException {// 把JVM默認(rèn)能反序列化的元素進(jìn)行反序列化操作s.defaultReadObject();// 手動完成stuAge的反序列化stuAge = s.readInt(); }}

測試類:

package pkg10;import java.io.*;import java.util.ArrayList;public class ObjectSeriaDemo { public static void main(String[] args) throws IOException, ClassNotFoundException {String file = 'demo/obj.dat';// 1、對象的序列化/*ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));Student student = new Student('10001', '張三', 20);oos.writeObject(student);oos.flush();oos.close();*/// 2、對象的反序列化ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));Student stu = (Student) ois.readObject();System.out.println(stu);ois.close(); }}6.2 序列化、反序列化時,子類、父類構(gòu)造方法的調(diào)用

package pkg11;import java.io.*;import java.sql.SQLOutput;public class ObjectSeriaDemo { public static void main(String[] args) throws IOException, ClassNotFoundException {// 序列化/*ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream('demo/obj1.dat'));Foo2 foo2=new Foo2();oos.writeObject(foo2);oos.flush();oos.close();*/// 反序列化/*ObjectInputStream ois=new ObjectInputStream(new FileInputStream('demo/obj1.dat'));Foo2 foo2= (Foo2) ois.readObject();System.out.println(foo2);ois.close();*//*ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream('demo/obj1.dat'));Bar2 bar2=new Bar2();oos.writeObject(bar2);oos.flush();oos.close();*//*ObjectInputStream ois = new ObjectInputStream(new FileInputStream('demo/obj1.dat'));Bar2 bar2 = (Bar2) ois.readObject();System.out.println(bar2);ois.close();*//*ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream('demo/obj1.dat'));Ccc2 ccc2=new Ccc2();oos.writeObject(ccc2);oos.flush();oos.close();*/ObjectInputStream ois = new ObjectInputStream(new FileInputStream('demo/obj1.dat'));Ccc2 ccc2 = (Ccc2) ois.readObject();System.out.println(ccc2);ois.close(); }}/** * 一個類實(shí)現(xiàn)了序列化接口,其子類都可以實(shí)現(xiàn)序列化。 */class Foo implements Serializable { public Foo() {System.out.println('foo...'); }}class Foo1 extends Foo { public Foo1() {System.out.println('foo1...'); }}class Foo2 extends Foo1 { public Foo2() {System.out.println('foo2...'); }}/** * 對子類對象進(jìn)行反序列化操作時, * 如果其父類沒有實(shí)現(xiàn)序列化接口 * 那么其父類的構(gòu)造函數(shù)會被調(diào)用 */class Bar { public Bar() {System.out.println('Bar...'); }}class Bar1 extends Bar implements Serializable { public Bar1() {System.out.println('Bar1...'); }}class Bar2 extends Bar1 { public Bar2() {System.out.println('Bar2...'); }}class Ccc { public Ccc() {System.out.println('Ccc...'); }}class Ccc1 extends Ccc { public Ccc1() {System.out.println('Ccc1...'); }}class Ccc2 extends Ccc1 implements Serializable { public Ccc2() {System.out.println('Ccc2...'); }}

Foo2類反序列化時不打印構(gòu)造方法:

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

Bar2類反序列化時打印了Bar的構(gòu)造方法:

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

Ccc2類反序列化時打印了Ccc、Ccc1的構(gòu)造方法:

Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)

結(jié)論(詳見導(dǎo)圖標(biāo)紅部分):

對子類對象進(jìn)行反序列化操作時,如果其父類沒有實(shí)現(xiàn)序列化接口,那么其父類的構(gòu)造函數(shù)會被調(diào)用。

到此這篇關(guān)于Java IO流學(xué)習(xí)總結(jié)之文件傳輸基礎(chǔ)的文章就介紹到這了,更多相關(guān)Java IO流文件傳輸內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
蜜臀av在线播放一区二区三区| 国产午夜精品一区二区三区欧美| 最新国产精品视频| 欧美一区=区| 视频一区视频二区中文字幕| 亚洲一区二区成人| 国产一级久久| 免费日韩av片| 亚洲精品中文字幕乱码| 久久网站免费观看| 久久国产电影| 欧美日韩国产一区二区三区不卡| 99视频+国产日韩欧美| 亚洲午夜视频| 巨乳诱惑日韩免费av| 中文字幕av亚洲精品一部二部| 免费在线欧美视频| 亚洲免费专区| 麻豆成人91精品二区三区| 国产精品宾馆| 日韩免费久久| 亚洲制服少妇| 日本欧美韩国一区三区| 91国内精品| 麻豆极品一区二区三区| 麻豆理论在线观看| 一区在线视频观看| 亚洲美女久久| 国产麻豆一区| 国产自产自拍视频在线观看| 久久激情网站| 亚洲色图网站| 欧美成人精品午夜一区二区| 国产成人在线中文字幕| 日韩欧美一区二区三区免费观看| 精品在线99| 亚洲精品黄色| 国产一区二区三区网| 成人日韩av| 激情五月色综合国产精品| 首页亚洲欧美制服丝腿| 国产欧美一区二区精品久久久 | 国产精品亚洲人成在99www| 久久永久免费| 欧美日韩国产综合网| 欧美在线看片| 国内不卡的一区二区三区中文字幕| 99久久久国产精品美女| 日本伊人久久| 日韩欧美午夜| 日韩国产91| 天堂日韩电影| 日韩精品高清不卡| 日韩精品久久久久久久电影99爱 | 麻豆成人在线观看| 亚洲一区日韩在线| 久久久久伊人| 亚洲免费高清| 国产精品视频一区二区三区综合| 亚洲三级欧美| 日韩视频1区| 日韩不卡在线| 国产亚洲人成a在线v网站| 国产综合色产| 久久精品国产久精国产| 亚洲一区二区三区高清| 精品久久亚洲| 久久亚洲一区| 色天使综合视频| 国产精品嫩模av在线| 自由日本语亚洲人高潮| 久久不卡日韩美女| 在线精品国产亚洲| 日韩网站中文字幕| 亚洲精品进入| 91精品综合| 欧美激情日韩| 亚洲欧美日韩精品一区二区 | 中文字幕中文字幕精品| 亚洲www啪成人一区二区| 亚洲精品影视| 91精品91| 精品视频在线观看网站| 亚洲日韩视频| 欧美日韩精品免费观看视欧美高清免费大片 | 伊人久久婷婷| 麻豆免费精品视频| 午夜久久黄色| 免费亚洲婷婷| 国产91精品对白在线播放| 午夜日本精品| 欧美黑人做爰爽爽爽| 精品亚洲美女网站| 精品视频国内| 美女国产精品| 激情综合五月| 日韩激情一二三区| 日本麻豆一区二区三区视频| 精品视频亚洲| 日本va欧美va瓶| 免费不卡中文字幕在线| 日韩精品一区二区三区免费视频| 国产日韩欧美一区二区三区| 天堂日韩电影| 国产精品99久久免费| 日本色综合中文字幕| 成人国产精品一区二区免费麻豆| 日韩精品首页| 精品成av人一区二区三区| 欧美在线看片| 亚洲精品日本| 日日摸夜夜添夜夜添国产精品| 中文一区在线| 精品国产黄a∨片高清在线| 午夜久久影院| 免费日本视频一区| 香蕉久久夜色精品国产| 影音先锋久久精品| 日韩成人精品一区二区| 亚洲一区欧美| 精品国产99| 亚洲手机在线| 日本欧美不卡| 日本大胆欧美人术艺术动态| 久久精品xxxxx| 日韩动漫一区| 中文字幕日本一区二区| 2023国产精品久久久精品双| 日韩精品影视| 欧美日中文字幕| 激情婷婷亚洲| 一区视频在线| 久久性天堂网| 亚洲欧洲国产精品一区| 在线观看视频免费一区二区三区| 亚洲综合二区| 婷婷综合国产| 日韩二区三区在线观看| 国产亚洲精aa在线看| 欧美日本不卡| 麻豆精品少妇| 日韩欧美二区| 99久久久久| 亚洲精华国产欧美| 伊人久久亚洲| 国产伦理久久久久久妇女| 国产精品白浆| www.com.cn成人| 久久精品欧美一区| 国精品一区二区三区| 欧美日韩三区| 亚州国产精品| 欧美激情三区| 久久人人精品| 蜜臀va亚洲va欧美va天堂 | 欧美日韩国产v| 久久精品国语| 免费视频最近日韩| 久久久久伊人| 亚洲精品国产偷自在线观看| 日韩中文字幕| 精品国产欧美日韩| 最新日韩av| 欧美日韩亚洲一区三区| 精品久久免费| 在线视频精品| 青草综合视频| yellow在线观看网址| av成人国产| 国产精品久久久久久久免费软件| 久久99高清| 不卡中文字幕| 国产视频一区二区在线播放| 欧美日韩在线观看首页| 蜜臀av亚洲一区中文字幕| 国产精品久久| 1024精品久久久久久久久| 欧美日韩调教| 久久影院一区| 国产一精品一av一免费爽爽| 日韩一区二区在线免费| 亚洲尤物av| 都市激情国产精品| 久久福利一区| 精品一区不卡| 中文精品在线| 久久精品天堂| 久久xxxx| 人在线成免费视频| 日韩一区二区三区精品| 热三久草你在线| 91麻豆精品激情在线观看最新| 欧美成人基地| 欧美日韩精品一区二区三区视频| 999久久久国产精品| 国产欧美日韩免费观看| 不卡一区2区| 麻豆久久一区二区| 视频一区中文字幕国产| 国产va免费精品观看精品视频|