java高級考試題復(fù)習(xí)題3-Java IO流題庫

一、 填空題

1.Java IO流可以分為 節(jié)點(diǎn)流 和處理流兩大類路狮,其中前者處于IO操作的第一線步绸,所有操作必須通過他們進(jìn)行。
2.輸入流的唯一目的是提供通往數(shù)據(jù)的通道显拜,程序可以通過這個(gè)通道讀取數(shù)據(jù)衡奥, read
方法給程序提供了一個(gè)從輸入流中讀取數(shù)據(jù)的基本方法。

1.read方法從輸入流中順序讀取源中的單個(gè)字節(jié)數(shù)據(jù)远荠,該方法返回字節(jié)值(0-255之間的一個(gè)整數(shù))矮固,如果到達(dá)源的末尾,該方法返回 -1 譬淳。
2.Java系統(tǒng)的標(biāo)準(zhǔn)輸入對象是System.in档址,標(biāo)準(zhǔn)輸出對象有兩個(gè),分別是標(biāo)準(zhǔn)輸出System.out和標(biāo)準(zhǔn)錯(cuò)誤輸出____System.err__邻梆。
3.Java IO體系中守伸,___ ObjectInputStream 是字節(jié)輸入流,不僅提供了存取所有Java基礎(chǔ)類型數(shù)據(jù)(如:int浦妄,double 等)和String的方法,也提供了提供存取對象的方法尼摹。
4.Java IO體系中,____ DataOutputStream 是字節(jié)輸出流剂娄,提供了可以存取所有Java基礎(chǔ)類型數(shù)據(jù)(如:int蠢涝,double 等)和String的方法,但沒有提供存取對象的方法。
5.
序列化
_是指將Java對象轉(zhuǎn)換成字節(jié)序列阅懦,從而可以保存到磁盤上和二,也可以在網(wǎng)絡(luò)上傳輸,使得不同的計(jì)算機(jī)可以共享對象耳胎。

二惯吕、 選擇題

1.

使用Java IO流實(shí)現(xiàn)對文本文件的讀寫過程中,需要處理下列(  B  )異常怕午。(選擇一項(xiàng))

 

 

 

 

A

ClassNotFoundException

 

B.

IOException

 

C.

SQLException

 

D.

RemoteException

 

2.

在Java的IO操作中混埠,(  D  )方法可以用來刷新流的緩沖。(選擇兩項(xiàng))

 

 

 

 

A

void release()

 

B.

void close()

 

C.

void remove()

 

D.

void flush()

 

3.

在Java中诗轻,下列關(guān)于讀寫文件的描述錯(cuò)誤的是(  B  )钳宪。(選擇一項(xiàng))

 

 

 

 

A

Reader類的read()方法用來從源中讀取一個(gè)字符的數(shù)據(jù)

 

B.

Reader類的read(int n )方法用來從源中讀取一個(gè)字符的數(shù)據(jù)

 

C.

Writer類的write(int n)方法用來向輸出流寫入單個(gè)字符

 

D.

Writer類的write(String str)方法用來向輸出流寫入一個(gè)字符串

 

 

 

4.

閱讀下列文件定入的Java代碼,共有(  C  )處錯(cuò)誤。(選擇一項(xiàng))

 

import java.io.*;

public class TestIO {

         public static void main(String []args){

                   String str ="文件寫入練習(xí)";

                   FileWriter fw = null;        //1

                   try{

                            fw = new FileWriter("c:\mytext.txt");  //2

                            fw.writerToEnd(str);   //3

                   }catch(IOException e){   //4

                            e.printStackTrace();

                   }finally{

                            //此處省略關(guān)閉流

                   }

         }

}

 

 

 

 

A

0

 

B.

1

 

C.

2

 

D.

3

 

5.

分析如下Java代碼吏颖,有標(biāo)注的四行代碼中搔体,有錯(cuò)誤的是第( D )處。(選擇一項(xiàng))

 

import java.io.FileWriter;

import java.io.IOException;

public class Test {

         public static void main(String[ ] args) {

                   String str = "Hello World";

                   FileWriter fw = null;

                   try {

                            fw = new FileWriter("c:\\hello.txt"); // 1

                            fw.write(str);                     // 2

                   } catch (IOException e) {

                            e.printStackTrace();               // 3

                   } finally {

                            fw.close();                        // 4

                   }

         }

}

 

 

 

 

A

1

 

B.

2

 

C.

3

 

D.

4

 

6.

以下選項(xiàng)中關(guān)于如下代碼的說法正確的是(  AD  )半醉。(選擇二項(xiàng))

 

public class TestBuffered {

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

                   BufferedReader br =

                            new BufferedReader(new FileReader("d:/bjsxt1.txt"));

                   BufferedWriter bw =

                            new BufferedWriter(new FileWriter("d:/bjsxt2.txt"));

                   String str = br.readLine();

                   while(str !=null){

                            bw.write(str);

                            bw.newLine();

                            str = br.readLine();

                   }

                   br.close();

                   bw.close();     

         }

}

 

 

 

 

A.

該類使用字符流實(shí)現(xiàn)了文件復(fù)制疚俱,將d:/bjsxt1.txt復(fù)制為d:/bjsxt2.txt

 

B.

FileReader和FileWriter是處理流,直接從文件讀寫數(shù)據(jù)

 

C.

BufferedReader和BufferedWriter是節(jié)點(diǎn)流缩多,提供緩沖區(qū)功能呆奕,提高讀寫效率

 

D.

readLine()可以讀取一行數(shù)據(jù),返回值是字符串類型衬吆,簡化了操作

 

7.

InputStreamReader是轉(zhuǎn)換流梁钾,可以將字節(jié)流轉(zhuǎn)換成字符流,是字符流與字節(jié)流之間的橋梁逊抡。它的實(shí)現(xiàn)使用的設(shè)計(jì)模式是(  C  )姆泻。(選擇一項(xiàng))

 

 

 

 

A.

工廠模式

 

B.

裝飾模式

 

C.

適配器模式

 

D.

代理模式

三、 判斷題

1.假設(shè)文件”a.txt”的長度為100字節(jié)冒嫡,那么當(dāng)正常運(yùn)行語句”O(jiān)utputStream f=new FileOutputStream(new File(“a.txt”));”之后拇勃,文件”a.txt”的長度變?yōu)?字節(jié)。( T )
2.ByteArrayInutStream和ByteArrayOutputStream對內(nèi)存中的字節(jié)數(shù)組進(jìn)行讀寫操作孝凌,屬于字節(jié)流方咆,屬于處理流而不是節(jié)點(diǎn)流。 ( F )
3.實(shí)現(xiàn)Serializable接口的可以被序列化和反序列化蟀架。該接口中沒有定義抽象方法瓣赂,也沒有定義常量。( T )
4.序列化是指將字節(jié)序列轉(zhuǎn)換成Java對象辜窑,只有實(shí)現(xiàn)了Serializable接口的類的對象才可以被序列化。( F )

四寨躁、 簡答題

1.輸入流和輸出流的聯(lián)系和區(qū)別穆碎,字符流和字節(jié)流的聯(lián)系和區(qū)別

1.列舉常用的字節(jié)輸入流和字節(jié)輸出流并說明其特點(diǎn),至少5對职恳。

1.說明緩沖流的優(yōu)點(diǎn)和原理

1.序列化的定義所禀、實(shí)現(xiàn)和注意事項(xiàng)

五、 編碼題

1.實(shí)現(xiàn)字符串和字節(jié)數(shù)組之間的相互轉(zhuǎn)換放钦。必如將字符串“北京尚學(xué)堂bjsxt”轉(zhuǎn)換為字節(jié)數(shù)組色徘,并將字節(jié)數(shù)組再轉(zhuǎn)換回字符串。

public class TestConvert
{
    public static void main(String[] args) throws IOException
    {
        //準(zhǔn)備一個(gè)字符串
        String contents = " 近日操禀,北京尚學(xué)堂科技有限公司正式成為央視網(wǎng)廣告合作伙伴";
        System.out.println(contents);
        //String---byte []
        byte[] buf = contents.getBytes();
        //byte[]----String
        String contents2 = new String(buf, 0, buf.length);
        System.out.println(contents2);
    }
}

2.實(shí)現(xiàn)字節(jié)數(shù)組和任何基本類型和引用類型執(zhí)行的相互轉(zhuǎn)換

提示:使用ByteArrayInutStream和ByteArrayOutputStream褂策。

public class TestByteArrayStream
{
    public static void main(String[] args) throws IOException,
            ClassNotFoundException
    {
        int num = 50;
        boolean flag = true;
        User user = new User("bjsxt", "bjsxt");
        //使用數(shù)據(jù)包把數(shù)據(jù)封裝起來
        //各種數(shù)據(jù)類型----->byte[]  ByteArrayOutputStream          
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(baos);//包裝流
        oos.writeInt(num);
        oos.writeBoolean(flag);
        oos.writeObject(user);
        byte[] buf = baos.toByteArray();
        baos.close();
        //byte[]----------->各種數(shù)據(jù)類型
        ByteArrayInputStream bais = new ByteArrayInputStream(buf);
        ObjectInputStream ois = new ObjectInputStream(bais);
        int num2 = ois.readInt();
        boolean flag2 = ois.readBoolean();
        User user2 = (User) ois.readObject();
        System.out.println(num2);
        System.out.println(flag2);
        System.out.println(user2);
        bais.close();
    }
}

3.分別使用文件流和緩沖流復(fù)制一個(gè)長度大于100MB的視頻文件,并觀察效率的差異。

public class TestCopy4
{
    public static void main(String[] args) throws IOException
    {
        //創(chuàng)建輸入流和輸出流
        InputStream fis = new FileInputStream(new File("d:/1.mp4"));
        OutputStream fos = new FileOutputStream("d:/2.mp4");
        //使用輸入流和輸出流復(fù)制文件
        byte[] buf = new byte[10];
        int len = fis.read(buf);
        while (len != -1)
        {
            //寫
            fos.write(buf, 0, len);
            //讀
            len = fis.read(buf);
            //System.out.println(len);
        }
        //關(guān)閉輸入流和輸出流
        fis.close();
        fos.close();
    }
}
public class TestCopy
{
    public static void main(String[] args) throws IOException
    {
        //創(chuàng)建輸入流和輸出流
        InputStream fis = new FileInputStream(new File("d:/1.mp4"));
        OutputStream fos = new FileOutputStream("d:/2.mp4");
        BufferedInputStream bis = new BufferedInputStream(fis);
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        //使用輸入流和輸出流復(fù)制文件
        byte[] buf = new byte[10];
        int len = bis.read(buf);
        while (len != -1)
        {
            //寫
            bos.write(buf, 0, len);
            //讀
            len = bis.read(buf);
        }
        //關(guān)閉輸入流和輸出流
        bis.close();
        bos.close();
    }
}

4.復(fù)制文件夾d:/sxtjava下面所有文件和子文件夾內(nèi)容到d:/sxtjava2斤寂。

提示:涉及單個(gè)文件復(fù)制耿焊、目錄的創(chuàng)建、遞歸的使用

public class CopyDir
{
    /**
     *
     * 復(fù)制單個(gè)文件
     *
     * @param sourceFile 源文件
     *
     * @param targetFile 目標(biāo)文件
     *
     * @throws IOException
     *
     */
    public static void copyFile(File sourceFile, File targetFile) throws IOException
    {
        BufferedInputStream inBuff = null;
        BufferedOutputStream outBuff = null;
        try
        {
            // 新建文件輸入流
            inBuff = new BufferedInputStream(new FileInputStream(sourceFile));
            // 新建文件輸出流
            outBuff = new BufferedOutputStream(new FileOutputStream(targetFile));
            // 緩沖數(shù)組
            byte[] b = new byte[1024 * 5];
            int len;
            while ((len = inBuff.read(b)) != -1)
            {
                outBuff.write(b, 0, len);
            }
            // 刷新此緩沖的輸出流
            outBuff.flush();
        } finally
        {
            // 關(guān)閉流
            if (inBuff != null)
            {
                inBuff.close();
            }
            if (outBuff != null)
            {
                outBuff.close();
            }
        }
    }
    /**
     *
     * 復(fù)制目錄
     *
     * @param sourceDir 源目錄
     *
     * @param targetDir 目標(biāo)目錄
     *
     * @throws IOException
     *
     */
    public static void copyDirectiory(String sourceDir, String targetDir)
            throws IOException
    {
        // 檢查源目錄
        File fSourceDir = new File(sourceDir);
        if (!fSourceDir.exists() || !fSourceDir.isDirectory())
        {
            System.out.println("源目錄不存在");
            return;
        }
        //檢查目標(biāo)目錄遍搞,如不存在則創(chuàng)建
        File fTargetDir = new File(targetDir);
        if (!fTargetDir.exists())
        {
            fTargetDir.mkdirs();
        }
        // 遍歷源目錄下的文件或目錄
        File[] file = fSourceDir.listFiles();
        for (int i = 0; i < file.length; i++)
        {
            if (file[i].isFile())
            {
                // 源文件
                File sourceFile = file[i];
                // 目標(biāo)文件
                File targetFile = new File(fTargetDir, file[i].getName());
                copyFile(sourceFile, targetFile);
            }
            //遞歸復(fù)制子目錄
            if (file[i].isDirectory())
            {
                // 準(zhǔn)備復(fù)制的源文件夾
                String subSourceDir = sourceDir + File.separator + file[i].getName();
                // 準(zhǔn)備復(fù)制的目標(biāo)文件夾
                String subTargetDir = targetDir + File.separator + file[i].getName();
                // 復(fù)制子目錄
                copyDirectiory(subSourceDir, subTargetDir);
            }
        }
    }
    public static void main(String[] args) throws IOException
    {
        copyDirectiory("d:/sxtjava", "d:/sxtjava2");
    }
}

可選題

1.使用IO包中的類讀取D盤上exam.txt文本文件的內(nèi)容罗侯,每次讀取一行內(nèi)容,將每行作為一個(gè)輸入放入ArrayList的泛型集合中并將集合中的內(nèi)容使用加強(qiáng)for進(jìn)行輸出顯示溪猿。

public class Test
{
    public static void main(String[] args) throws IOException
    {
        String path = "D:\\exam.txt";
        outputMethod(path);
    }
    public static void outputMethod(String path) throws IOException
    {
        List<String> list = new ArrayList<String>(); // 創(chuàng)建集合對象
        // 創(chuàng)建緩沖區(qū)對象
        BufferedReader br = new BufferedReader(new FileReader(path));
        String line = br.readLine(); // 讀取數(shù)據(jù)每次讀一行
        while (line != null)
        {
            list.add(line);
            line = br.readLine();
        }
        br.close();              //關(guān)閉
        for (String s : list)
        {
            System.out.println(s);
        }
    }
}

2.假設(shè)從入學(xué)開始所有書寫的Java類代碼都在d:/sxtjava文件夾下钩杰,包括多級子文件夾。使用IO流獲取從入學(xué)開始诊县,到目前為止已經(jīng)寫了多少行Java代碼讲弄。

提示:

其實(shí)就是獲取d:/sxtjava文件夾及其子文件夾下的所有.java文件,使用readLine()讀取其中每一行翎冲,每讀取一行垂睬,行數(shù)加1。所有的文件讀取完畢抗悍,得到總共已經(jīng)寫的Java代碼行數(shù)驹饺。需要結(jié)合遞歸實(shí)現(xiàn)。

public class TestCountDir
{
    private int count;
    /**
     *
     * 統(tǒng)計(jì)一個(gè)java文件的行數(shù)
     *
     */
    private void countLine(File sourceFile) throws IOException
    {
        BufferedReader br = null;
        try
        {
            // 新建文件輸入流
            br = new BufferedReader(new FileReader(sourceFile));
            while (br.readLine() != null)
            {
                count++;
                //System.out.println(count);
            }
        } finally
        {
            br.close();
        }
    }
    /**
     *
     * 統(tǒng)計(jì)一個(gè)目錄下所有Java文件的行數(shù)
     *
     */
    private void countDir(String sourceDir) throws IOException
    {
        // 檢查源目錄
        File fSourceDir = new File(sourceDir);
        if (!fSourceDir.exists() || !fSourceDir.isDirectory())
        {
            System.out.println("源目錄不存在");
            return;
        }
        // 遍歷目錄下的文件或目錄
        File[] file = fSourceDir.listFiles();
        for (int i = 0; i < file.length; i++)
        {
            if (file[i].isFile())
            {
                if (file[i].getName().toLowerCase().endsWith(".java"))
                {
                    // System.out.println(file[i].getName());
                    countLine(file[i]);
                }
            }
            //遞歸統(tǒng)計(jì)代碼行數(shù)
            if (file[i].isDirectory())
            {
                // 準(zhǔn)備統(tǒng)計(jì)的文件夾
                String subSourceDir = sourceDir + File.separator + file[i].getName();
                // 統(tǒng)計(jì)子目錄
                countDir(subSourceDir);
            }
        }
    }
    public static void main(String[] args) throws IOException
    {
        TestCountDir tcd = new TestCountDir();
        tcd.countDir("d:/sxtjava");
        System.out.println(tcd.count);
    }
}

3.由控制臺按照固定格式輸入學(xué)生信息缴渊,包括學(xué)號赏壹,姓名,年齡信息衔沼,當(dāng)輸入的內(nèi)容為exit退出;將輸入的學(xué)生信息分別封裝到一個(gè)Student對象中指蚁,再將每個(gè)Student對象加入到一個(gè)集合中菩佑,要求集合中的元素按照年齡大小正序排序;最后遍歷集合凝化,將集合中學(xué)生信息寫入到記事本稍坯,每個(gè)學(xué)生數(shù)據(jù)占單獨(dú)一行。

public class Student implements Comparable<Student>
{
    private Integer num;
    private String name;
    private Integer age;
    //省略getter和setter方法
    //省略構(gòu)造方法
    public int compareTo(Student stu)
    {
        return this.age - stu.age;
    }
    public String toString()
    {
        return "Student [age=" + age + ", name=" + name
                + ", num=" + num + "]";
    }
}
public class Test
{
    public static void main(String[] args)
    {
        Set<Student> stuSet = saveStudentInfo();
        outputInfo(stuSet);
    }
    private static Set<Student> saveStudentInfo()
    {
        Scanner input = new Scanner(System.in);
        // 保存學(xué)生信息的TreeSet集合對象
        Set<Student> stuSet = new TreeSet<Student>();
        while (true)
        {
            // 輸入提示
            System.out.println("請輸入學(xué)生信息:(學(xué)號#姓名#年齡)");
            String inputData = input.nextLine();
            // 判斷是否退出 inputData.equals("exit")
            if ("exit".equals(inputData))
            {
                break;
            }
            // 將用戶輸入的學(xué)生信息分割為String[]
            String[] info = inputData.split("#");
            // 將輸入信息封裝到Student對象中
            Student stu
                    = new Student(Integer.parseInt(info[0]), info[1],
                            Integer.parseInt(info[2]));
            // 將學(xué)生對象加入集合
            stuSet.add(stu);
        }
        return stuSet;
    }
    private static void outputInfo(Set<Student> stuSet)
    {
        File file = new File("e:/student.txt");
        // 創(chuàng)建文件輸出流對象
        FileWriter fw = null;
        try
        {
            fw = new FileWriter(file);
            Iterator<Student> it = stuSet.iterator();
            while (it.hasNext())
            {
                String info = it.next().toString();
                // 將info字符串搓劫,寫入記事本
                fw.write(info);
                // 完成換行功能
                fw.write("\r\n");
            }
        } catch (Exception e)
        {
            e.printStackTrace();
        } finally
        {
            try
            {
                fw.close();
            } catch (IOException e)
            {
                e.printStackTrace();
            }
        }
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末瞧哟,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子枪向,更是在濱河造成了極大的恐慌勤揩,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秘蛔,死亡現(xiàn)場離奇詭異陨亡,居然都是意外死亡傍衡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評論 3 385
  • 文/潘曉璐 我一進(jìn)店門数苫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來聪舒,“玉大人,你說我怎么就攤上這事虐急∠洳校” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評論 0 348
  • 文/不壞的土叔 我叫張陵止吁,是天一觀的道長被辑。 經(jīng)常有香客問我,道長敬惦,這世上最難降的妖魔是什么盼理? 我笑而不...
    開封第一講書人閱讀 56,485評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮俄删,結(jié)果婚禮上宏怔,老公的妹妹穿的比我還像新娘。我一直安慰自己畴椰,他們只是感情好臊诊,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著斜脂,像睡著了一般抓艳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帚戳,一...
    開封第一講書人閱讀 49,821評論 1 290
  • 那天玷或,我揣著相機(jī)與錄音,去河邊找鬼片任。 笑死偏友,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的对供。 我是一名探鬼主播位他,決...
    沈念sama閱讀 38,960評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼犁钟!你這毒婦竟也來了棱诱?” 一聲冷哼從身側(cè)響起泼橘,我...
    開封第一講書人閱讀 37,719評論 0 266
  • 序言:老撾萬榮一對情侶失蹤涝动,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后炬灭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體醋粟,經(jīng)...
    沈念sama閱讀 44,186評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡靡菇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了米愿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厦凤。...
    茶點(diǎn)故事閱讀 38,650評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖育苟,靈堂內(nèi)的尸體忽然破棺而出较鼓,到底是詐尸還是另有隱情,我是刑警寧澤违柏,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布博烂,位于F島的核電站,受9級特大地震影響漱竖,放射性物質(zhì)發(fā)生泄漏禽篱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評論 3 313
  • 文/蒙蒙 一馍惹、第九天 我趴在偏房一處隱蔽的房頂上張望躺率。 院中可真熱鬧,春花似錦万矾、人聲如沸悼吱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舆绎。三九已至,卻和暖如春们颜,著一層夾襖步出監(jiān)牢的瞬間吕朵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評論 1 266
  • 我被黑心中介騙來泰國打工窥突, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留努溃,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評論 2 360
  • 正文 我出身青樓阻问,卻偏偏與公主長得像梧税,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子称近,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評論 2 349

推薦閱讀更多精彩內(nèi)容