Java學(xué)習(xí)筆記 21 - Properties集合、序列化桑谍、打印流

本文主要內(nèi)容:
1延柠、Properties集合
2、序列化流與反序列化流
3锣披、打印流
4贞间、commons-IO

01Properties集合

  • A: Properties集合的特點(diǎn)
  • a: Properties類(lèi)介紹
    Properties 類(lèi)表示了一個(gè)持久的屬性集。Properties 可保存在流中或從流中加載雹仿。屬性列表中每個(gè)鍵及其對(duì)應(yīng)值都是一個(gè)字符串
  • b: 特點(diǎn)
    Hashtable的子類(lèi)增热,map集合中的方法都可以用。
    該集合沒(méi)有泛型胧辽。鍵值都是字符串峻仇。
    它是一個(gè)可以持久化的屬性集。鍵值可以存儲(chǔ)到集合中票顾,也可以存儲(chǔ)到持久化的設(shè)備(硬盤(pán)础浮、U盤(pán)帆调、光盤(pán))上奠骄。鍵值的來(lái)源也可以是持久化的設(shè)備。
  • c: 方法介紹
    load(InputStream inputStream) 把指定流所對(duì)應(yīng)的文件中的數(shù)據(jù)番刊,讀取出來(lái)含鳞,保存到Propertie集合中

load(Reader reader) 按簡(jiǎn)單的面向行的格式從輸入字符流中讀取屬性列表(鍵和元素對(duì))

store(OutputStream outputStream,String commonts) 把集合中的數(shù)據(jù),保存到指定的流所對(duì)應(yīng)的文件中芹务,參數(shù)commonts代表對(duì)描述信息

stroe(Writer writer,String comments) 以適合使用 load(Reader) 方法的格式蝉绷,將此 Properties 表中的屬性列表(鍵和元素對(duì))寫(xiě)入輸出字符

  • B: Properties集合存儲(chǔ)鍵值對(duì)

    • a: 方法介紹
      集合對(duì)象Properties類(lèi),繼承Hashtable,實(shí)現(xiàn)Map接口
      可以和IO對(duì)象結(jié)合使用,實(shí)現(xiàn)數(shù)據(jù)的持久存儲(chǔ)
      使用Properties集合,存儲(chǔ)鍵值對(duì)
      setProperty等同與Map接口中的put
      setProperty(String key, String value)
      通過(guò)鍵獲取值, getProperty(String key)

    • b: 案例代碼

        public class PropertiesDemo {
            public static void main(String[] args)throws IOException {
                function_2();
            }
            /*
             * 使用Properties集合,存儲(chǔ)鍵值對(duì)
             * setProperty等同與Map接口中的put
             * setProperty(String key, String value)
             * 通過(guò)鍵獲取值, getProperty(String key)
             */
            public static void function(){
                Properties pro = new Properties();
                pro.setProperty("a", "1");
                pro.setProperty("b", "2");
                pro.setProperty("c", "3");
                System.out.println(pro);
                
                String value = pro.getProperty("c");
                System.out.println(value);
                
                //方法stringPropertyNames,將集合中的鍵存儲(chǔ)到Set集合,類(lèi)似于Map接口的方法keySet
                Set<String> set = pro.stringPropertyNames();
                for(String key : set){
                    System.out.println(key+"..."+pro.getProperty(key));
                }
            }
        }
      
  • C: Properties集合的方法load

    • a: 方法介紹
      Properties集合特有方法 load
      load(InputStream in)
      load(Reader r)
      傳遞任意的字節(jié)或者字符輸入流
      流對(duì)象讀取文件中的鍵值對(duì),保存到集合

    • b: 案例代碼

            public class PropertiesDemo {
                public static void main(String[] args)throws IOException {
                    function_1();
                }                                   
                /*
                 * Properties集合特有方法 load
                 * load(InputStream in)
                 * load(Reader r)
                 * 傳遞任意的字節(jié)或者字符輸入流
                 * 流對(duì)象讀取文件中的鍵值對(duì),保存到集合
                 */
                public static void function_1()throws IOException{
                    Properties pro = new Properties();
                    FileReader fr = new FileReader("c:\\pro.properties");
                    //調(diào)用集合的方法load,傳遞字符輸入流
                    pro.load(fr);
                    fr.close();
                                            //輸出結(jié)果為:集合
                    System.out.println(pro);
                }                   
            }
      
  • D: Properties集合的方法store

    • a: 方法介紹
      Properties集合的特有方法store
      store(OutputStream out)
      store(Writer w)
      接收所有的字節(jié)或者字符的輸出流,將集合中的鍵值對(duì),寫(xiě)回文件中保存

    • b: 案例代碼

        public class PropertiesDemo {
            public static void main(String[] args)throws IOException {
                function_2();
            }
            /*
             * Properties集合的特有方法store
             * store(OutputStream out)
             * store(Writer w)
             * 接收所有的字節(jié)或者字符的輸出流,將集合中的鍵值對(duì),寫(xiě)回文件中保存
             */
            public static void function_2()throws IOException{
                Properties pro = new Properties();
                pro.setProperty("name", "zhangsan");
                pro.setProperty("age", "31");
                pro.setProperty("email", "123456789@163.com");
                FileWriter fw = new FileWriter("c:\\pro.properties");
                //鍵值對(duì),存回文件,使用集合的方法store傳遞字符輸出流
                pro.store(fw, "");
                fw.close();
            }               
        }
      

02對(duì)象的序列化與反序列化

  • A: 對(duì)象的序列化與反序列化

    • a: 基本概念
      • 對(duì)象的序列化
        對(duì)象中的數(shù)據(jù)鸭廷,以流的形式,寫(xiě)入到文件中保存過(guò)程稱為寫(xiě)出對(duì)象熔吗,對(duì)象的序列化
        ObjectOutputStream將對(duì)象寫(xiě)道文件中辆床,實(shí)現(xiàn)序列化
      • 對(duì)象的反序列化
        在文件中,以流的形式桅狠,將對(duì)象讀出來(lái)讼载,讀取對(duì)象,對(duì)象的反序列化
        ObjectInputStream 將文件對(duì)象讀取出來(lái)
  • B: ObjectOutputStream流寫(xiě)對(duì)象

    • a: 簡(jiǎn)單介紹
      IO流對(duì)象,實(shí)現(xiàn)對(duì)象Person序列化,和反序列化
      ObjectOutputStream 寫(xiě)對(duì)象,實(shí)現(xiàn)序列化
      ObjectInputStream 讀取對(duì)象,實(shí)現(xiàn)反序列化

    • b: 案例代碼

        public class Person implements Serializable{
            public String name;
            public int age;
            public Person(String name, int age) {
                super();
                this.name = name;
                this.age = age;
            }
            public Person(){}
            
            public String getName() {
                return name;
            }
            public void setName(String name) {
                this.name = name;
            }
            public int getAge() {
                return age;
            }
            public void setAge(int age) {
                this.age = age;
            }
            @Override
            public String toString() {
                return "Person [name=" + name + ", age=" + age + "]";
            }               
        }
        
        public class ObjectStreamDemo {
            public static void main(String[] args)throws IOException, ClassNotFoundException {
        //      writeObject();
                readObject();
            }
            /*
             * ObjectOutputStream
             * 構(gòu)造方法: ObjectOutputStream(OutputSteam out)
             * 傳遞任意的字節(jié)輸出流
             * void writeObject(Object obj)寫(xiě)出對(duì)象的方法
             */
            public static void writeObject() throws IOException{
                //創(chuàng)建字節(jié)輸出流,封裝文件
                FileOutputStream fos = new FileOutputStream("c:\\person.txt");
                //創(chuàng)建寫(xiě)出對(duì)象的序列化流的對(duì)象,構(gòu)造方法傳遞字節(jié)輸出流
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                Person p = new Person("lisi",25);
                //調(diào)用序列化流的方法writeObject,寫(xiě)出對(duì)象
                oos.writeObject(p);
                oos.close();
            }
        }
      

注意:
ObjectOutputStream 對(duì)JAVA對(duì)象進(jìn)行序列化處理中跌,處理后的對(duì)象不是文本數(shù)據(jù)咨堤。所以數(shù)據(jù)保存到文件中后,用記事本漩符、寫(xiě)字板一喘、Word等文本編輯器打開(kāi),是無(wú)法識(shí)別的嗜暴,一定會(huì)顯示亂碼凸克。只有使用相同版本的Java的ObjectInputStream進(jìn)行讀取操作,方可獲取文件中的對(duì)象內(nèi)容闷沥。

  • C: ObjectInputStream流讀取對(duì)象
    • a: 簡(jiǎn)單介紹
      ObjectInputStream
      構(gòu)造方法:ObjectInputStream(InputStream in)
      傳遞任意的字節(jié)輸入流,輸入流封裝文件,必須是序列化的文件
      Object readObject() 讀取對(duì)象

    • b: 案例代碼

        /*
         *  IO流對(duì)象,實(shí)現(xiàn)對(duì)象Person序列化,和反序列化
         *  ObjectOutputStream 寫(xiě)對(duì)象,實(shí)現(xiàn)序列化
         *  ObjectInputStream 讀取對(duì)象,實(shí)現(xiàn)反序列化
         */
        public class ObjectStreamDemo {
            public static void main(String[] args)throws IOException, ClassNotFoundException {
                readObject();
            }
            /*
             * ObjectInputStream
             * 構(gòu)造方法:ObjectInputStream(InputStream in)
             * 傳遞任意的字節(jié)輸入流,輸入流封裝文件,必須是序列化的文件
             * Object readObject()  讀取對(duì)象
             */
            public static void readObject() throws IOException, ClassNotFoundException{
                FileInputStream fis = new FileInputStream("c:\\person.txt");
                //創(chuàng)建反序列化流,構(gòu)造方法中,傳遞字節(jié)輸入流
                ObjectInputStream ois = new ObjectInputStream(fis);
                //調(diào)用反序列化流的方法 readObject()讀取對(duì)象
                Object obj =ois.readObject();
                System.out.println(obj);
                ois.close();
            }               
        }
      
    • D: 注意事項(xiàng)

      • a: 靜態(tài)不能序列化
        序列化是把對(duì)象數(shù)據(jù)進(jìn)行持久化存儲(chǔ)
        靜態(tài)的東西不屬于對(duì)象触徐,而屬于類(lèi)

      • b: transient關(guān)鍵字作用
        被transient修飾的屬性不會(huì)被序列化
        transient關(guān)鍵字只能修飾成員變量

      • c: Serializable接口作用
        給需要序列化的類(lèi)上加標(biāo)記。該標(biāo)記中沒(méi)有任何抽象方法
        只有實(shí)現(xiàn)了 Serializable接口的類(lèi)的對(duì)象才能被序列化

      • d: 序列化中的序列號(hào)沖突問(wèn)題產(chǎn)生原因
        當(dāng)一個(gè)類(lèi)實(shí)現(xiàn)Serializable接口后狐赡,創(chuàng)建對(duì)象并將對(duì)象寫(xiě)入文件撞鹉,之后更改了源代碼(比如:將成員變量的修飾符有private改成public),
        再次從文件中讀取對(duì)象時(shí)會(huì)報(bào)異常,如下:

        Exception in thread "main" java.io.InvalidClassException: com.sc.test03.Person; local class incompatible: stream classdesc serialVersionUID = -4746526460393451718, local class serialVersionUID = -8150046409784356539
        at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:616)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1829)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1713)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1986)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
        at com.sc.test03.ObjectStreamDemo.readObject(ObjectStreamDemo.java:23)
        at com.sc.test03.ObjectStreamDemo.main(ObjectStreamDemo.java:8)
        
    • E: 序列化中自定義的序列號(hào)

      • a: 定義方式
        private static final long serialVersionUID = 1478652478456L;
        這樣每次編譯類(lèi)時(shí)生成的serialVersionUID值都是固定的

      • b: 案例代碼

          public class Person implements Serializable{
          public String name;
          public /*transient阻止成員變量序列化*/ int age;
          //類(lèi),自定義了序列號(hào),編譯器不會(huì)計(jì)算序列號(hào)
          private static final long serialVersionUID = 1478652478456L;
        
          public Person(String name, int age) {
              super();
              this.name = name;
              this.age = age;
          }
          public Person(){}
          
          public String getName() {
              return name;
          }
          public void setName(String name) {
              this.name = name;
          }
          public int getAge() {
              return age;
          }
          public void setAge(int age) {
              this.age = age;
          }
          @Override
          public String toString() {
              return "Person [name=" + name + ", age=" + age + "]";
          }               
        

        }

03打印流和特性

  • A: 打印流和特性
    • a: 概述
      打印流添加輸出數(shù)據(jù)的功能颖侄,使它們能夠方便地打印各種數(shù)據(jù)值表示形式.
      • 打印流根據(jù)流的分類(lèi):
        字節(jié)打印流 PrintStream
        字符打印流 PrintWriter
      • 方法:
        void print(String str): 輸出任意類(lèi)型的數(shù)據(jù)鸟雏,
        void println(String str): 輸出任意類(lèi)型的數(shù)據(jù),自動(dòng)寫(xiě)入換行操作
    • b: 特點(diǎn)
      此流不負(fù)責(zé)數(shù)據(jù)源,只負(fù)責(zé)數(shù)據(jù)目的
      為其他輸出流,添加功能
      永遠(yuǎn)不會(huì)拋出IOException览祖,但是可能拋出別的異常
      兩個(gè)打印流的方法,完全一致
      構(gòu)造方法,就是打印流的輸出目的端
      • PrintStream構(gòu)造方法
        接收File類(lèi)型,接收字符串文件名,接收字節(jié)輸出流OutputStream
      • PrintWriter構(gòu)造方法
        接收File類(lèi)型,接收字符串文件名,接收字節(jié)輸出流OutputStream, 接收字符輸出流Writer
  • B: 打印流輸出目的是File對(duì)象
    * a: 案例代碼

          public class PrintWriterDemo {
              public static void main(String[] args) throws  IOException {
                  function_3();
    
              }
              
              /*
               * 打印流,向File對(duì)象的數(shù)據(jù)目的寫(xiě)入數(shù)據(jù)
               * 方法print println  原樣輸出
               * write方法走碼表
               */
              public static void function() throws FileNotFoundException{
                  File file = new File("c:\\1.txt");
                  PrintWriter pw = new PrintWriter(file);
                  pw.println(true);
                  pw.write(100);
                  pw.close();
              }
          }
    
  • C: 輸出語(yǔ)句是char數(shù)組

    • a: 案例代碼

        public class Demo {
            public static void main(String[] args) {
                int[] arr = {1};
                System.out.println(arr);//[I@5ca881b5
                
                char[] ch = {'a','b'};
                System.out.println(ch);//ab
                
                byte[] b = {};
                System.out.println(b);//[B@24d46ca6
            }
        }
      
      • b: 結(jié)果分析
        println數(shù)組孝鹊,只有打印字符數(shù)組時(shí)打印數(shù)組的地址
        因?yàn)閍pi中定義了打印字符數(shù)組的方法,其底層是在遍歷數(shù)組中的元素
        而其他打印數(shù)組的方法展蒂,都是將數(shù)組對(duì)象編程O(píng)bject又活,其底層再將對(duì)象編程String,調(diào)用了String s = String.valueOf(x);方法
    • D: 打印流輸出目的是String和流對(duì)象

      • a: 案例代碼

          public class PrintWriterDemo {
          public static void main(String[] args) throws  IOException {
              function_2();
        
          }
              
          /*
           * 打印流,輸出目的,是流對(duì)象
           * 可以是字節(jié)輸出流,可以是字符的輸出流
           * OutputStream  Writer
           */
          public static void function_2() throws IOException{
          //  FileOutputStream fos = new FileOutputStream("c:\\3.txt");
              FileWriter fw = new FileWriter("c:\\4.txt");
              PrintWriter pw = new PrintWriter(fw);
              pw.println("打印流");
              pw.close();
          }
          /*
           * 打印流,輸出目的,String文件名
           */
          public static void function_1() throws FileNotFoundException{
              PrintWriter pw = new PrintWriter("c:\\2.txt");
              pw.println(3.5);
              pw.close();
          }   
        

        }

    • E: 打印流開(kāi)啟自動(dòng)刷新

      • 案例代碼

          public class PrintWriterDemo {
          public static void main(String[] args) throws  IOException {
              function_3();
        
          }
          /* 
           * 打印流,可以開(kāi)啟自動(dòng)刷新功能
           * 滿足2個(gè)條件:
           *   1. 輸出的數(shù)據(jù)目的必須是流對(duì)象
           *       OutputStream  Writer
           *   2. 必須調(diào)用println,printf,format三個(gè)方法中的一個(gè),啟用自動(dòng)刷新
           */
          public static void function_3()throws  IOException{
              //File f = new File("XXX.txt");
              FileOutputStream fos = new FileOutputStream("c:\\5.txt");
              PrintWriter pw = new PrintWriter(fos,true);
              pw.println("i");
              pw.println("love");
              pw.println("java");
              pw.close();
          }
        

        }

  • F: 打印流復(fù)制文本文件
    * a: 案例代碼

          /*
           * 打印流實(shí)現(xiàn)文本復(fù)制
           *   讀取數(shù)據(jù)源  BufferedReader+File 讀取文本行
           *   寫(xiě)入數(shù)據(jù)目的 PrintWriter+println 自動(dòng)刷新
           */
          public class PrintWriterDemo1 {
              public static void main(String[] args) throws IOException{
                  BufferedReader bfr = new BufferedReader(new FileReader("c:\\a.txt"));
                  PrintWriter pw = new PrintWriter(new FileWriter("d:\\a.txt"),true);
                  String line = null;
                  while((line = bfr.readLine())!=null){
                      pw.println(line);
                  }
                  pw.close();
                  bfr.close();
              }
          }
    

04commons-io工具類(lèi)

  • A: commons-io工具類(lèi)介紹

    • a: 工具類(lèi)介紹
      解壓縮commons-io-2.4.zip文件
      commons-io-2.4.jar需要導(dǎo)入到項(xiàng)目中的jar包锰悼,里面存放的是class文件
      commons-io-2.4-sources.jar工具類(lèi)中原代碼
      docs是幫助文檔
  • B: 使用工具類(lèi)commons_io

    • a: 導(dǎo)入jar包
      加入classpath的第三方j(luò)ar包內(nèi)的class文件才能在項(xiàng)目中使用
      創(chuàng)建lib文件夾
      將commons-io.jar拷貝到lib文件夾
      右鍵點(diǎn)擊commons-io.jar柳骄,Build Path→Add to Build Path
  • C: IO工具類(lèi)FilenameUtils

    • a: 方法介紹
      getExtension(String path):獲取文件的擴(kuò)展名;
      getName():獲取文件名箕般;
      isExtension(String fileName,String ext):判斷fileName是否是ext后綴名耐薯;

    • b: 案例代碼

        public class Commons_IODemo {
            public static void main(String[] args) {
                function_2();
            }
            /*
             * FilenameUtils類(lèi)的方法
             * static boolean isExtension(String filename,String extension)
             * 判斷文件名的后綴是不是extension
             */
            public static void function_2(){
                boolean b = FilenameUtils.isExtension("Demo.java", "java");
                System.out.println(b);
            }
            
            /*
             * FilenameUtils類(lèi)的方法
             * static String getName(String filename)
             * 獲取文件名
             */
            public static void function_1(){
                String name = FilenameUtils.getName("c:\\windows\\");
                System.out.println(name);
            }
            
            /*
             * FilenameUtils類(lèi)的方法
             * static String getExtension(String filename)
             * 獲取文件名的擴(kuò)展名
             */
             public static void function(){
                 String name = FilenameUtils.getExtension("c:\\windows");
                 System.out.println(name);
             }
        }
      
  • D: IO工具類(lèi)FileUtils

    • a: 方法介紹
      readFileToString(File file):讀取文件內(nèi)容,并返回一個(gè)String;
      writeStringToFile(File file曲初,String content):將內(nèi)容content寫(xiě)入到file中体谒;
      copyDirectoryToDirectory(File srcDir,File destDir);文件夾復(fù)制
      copyFile(File srcFile,File destFile);文件復(fù)制

    • b: 案例代碼

        public class Commons_IODemo1 {
            public static void main(String[] args)throws IOException {
                function_3();
            }
            /*
             * FileUtils工具類(lèi)方法
             * static void copyDirectoryToDirectory(File src,File desc)
             * 復(fù)制文件夾
             */
            public static void function_3() throws IOException{
                FileUtils.copyDirectoryToDirectory(new File("d:\\demo"), new File("c:\\"));
            }
            
            /*
             * FileUtils工具類(lèi)的方法
             * static void copyFile(File src,File desc)
             * 復(fù)制文件
             */
            public static void function_2() throws IOException{
                FileUtils.copyFile(new File("c:\\k.jpg"),new File("d:\\k.jpg"));
            }
            
            /*
             * FileUtils工具類(lèi)的方法
             * static void writeStringToFile(File src,String date)
             * 將字符串直接寫(xiě)到文件中
             */
            public static void function_1() throws IOException{
                FileUtils.writeStringToFile(new File("c:\\b.txt"),"我愛(ài)Java編程");
            }
            
            /*
             * FileUtils工具類(lèi)的方法
             * static String readFileToString(File src)讀取文本,返回字符串
             */
             public static void function() throws IOException{
                 String s = FileUtils.readFileToString(new File("c:\\a.txt"));
                 System.out.println(s);
             }
        }
      
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市臼婆,隨后出現(xiàn)的幾起案子抒痒,更是在濱河造成了極大的恐慌,老刑警劉巖颁褂,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件评汰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡痢虹,警方通過(guò)查閱死者的電腦和手機(jī)被去,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)奖唯,“玉大人惨缆,你說(shuō)我怎么就攤上這事》峤荩” “怎么了坯墨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)病往。 經(jīng)常有香客問(wèn)我捣染,道長(zhǎng),這世上最難降的妖魔是什么停巷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任耍攘,我火速辦了婚禮,結(jié)果婚禮上畔勤,老公的妹妹穿的比我還像新娘蕾各。我一直安慰自己,他們只是感情好庆揪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布式曲。 她就那樣靜靜地躺著,像睡著了一般缸榛。 火紅的嫁衣襯著肌膚如雪吝羞。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天内颗,我揣著相機(jī)與錄音钧排,去河邊找鬼。 笑死起暮,一個(gè)胖子當(dāng)著我的面吹牛卖氨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播负懦,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼筒捺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了纸厉?” 一聲冷哼從身側(cè)響起系吭,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颗品,沒(méi)想到半個(gè)月后肯尺,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躯枢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年则吟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锄蹂。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡氓仲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出得糜,到底是詐尸還是另有隱情敬扛,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布朝抖,位于F島的核電站啥箭,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏治宣。R本人自食惡果不足惜急侥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望侮邀。 院中可真熱鬧缆巧,春花似錦、人聲如沸豌拙。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)按傅。三九已至捉超,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間唯绍,已是汗流浹背拼岳。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留况芒,地道東北人惜纸。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親耐版。 傳聞我的和親對(duì)象是個(gè)殘疾皇子祠够,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355