2019-01-21

更新工具代碼 進(jìn)度2.0

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.IO;
using Microsoft.VisualBasic.Devices;
using System.Text.RegularExpressions;

namespace PMPPGEN
{
    public partial class Form1 : Form
    {
        #region 聲明變量

        //INI文件名
        private static string PMPPGEN_FileName = "PMPPGEN.ini";
        private static string PM7_FileName = "PM7.ini";
        private static string HDATE_FileName = "HDATE.ini";
        private static string VFREPORT_FileName = "VFREPORT.ini";
        //獲取INI文件路徑
        private string PMPPGEN_FilePath = Application.StartupPath + "\\" + PMPPGEN_FileName;
        private string PM7_FilePath = Application.StartupPath + "\\" + PM7_FileName;
        private string HDATE_FilePath = Application.StartupPath + "\\" + HDATE_FileName;
        private string VFREPORT_FilePath = Application.StartupPath + "\\" + VFREPORT_FileName;
        //元號固定用定義
        private string GENGO_Section = "cpGENGO";//PMPPGEN節(jié)點(diǎn)名
        private string PM7_Section = "cpGENGO";//PM7節(jié)點(diǎn)名
        private string JpnYears_Section = "JpnYears";//JpnYears節(jié)點(diǎn)
        private string WDATETIM_Section = "WDATETIM";//WDATETIM節(jié)點(diǎn)
        private string HDATE_Section = "NENGO";//HDATE節(jié)點(diǎn)名
        private string VFREPORT_Section = "Fclib";//VFREPORT節(jié)點(diǎn)名
        //HDATE的key值組
        private string gengo = "GENGO";
        private string ryaku = "RYAKU";
        private string startTime = "START";
        private string endTime = "END";
        private string nensa = "NENSA";
        //VFREPORT的key值組
        private string nengou = "Nengou";

        ///核心方法定義
        /// <summary>
        /// 寫入INI文件
        /// </summary>
        /// <param name="section">節(jié)點(diǎn)名稱[如[TypeName]]</param>
        /// <param name="key">鍵</param>
        /// <param name="val">值</param>
        /// <param name="filepath">文件路徑</param>
        /// <returns>??</returns>
        [DllImport("kernel32")]
        private static extern long WritePrivateProfileString(string section, string key, string val, string filepath);
        /// <summary>
        /// 讀取INI文件
        /// </summary>
        /// <param name="section">節(jié)點(diǎn)名稱</param>
        /// <param name="key">鍵</param>
        /// <param name="def">值</param>
        /// <param name="retval">strignbuilder對象</param>
        /// <param name="size">字節(jié)大小</param>
        /// <param name="filePath">文件路徑</param>
        /// <returns>??</returns>
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);
        /// <summary>
        /// 獲取對應(yīng)Section下所有key值
        /// </summary>
        /// <param name="section">節(jié)點(diǎn)名稱</param>
        /// <param name="key">鍵</param>
        /// <param name="def">值</param>
        /// <param name="retVal">Byte數(shù)組對象</param>
        /// <param name="size">字節(jié)大小</param>
        /// <param name="filePath">文件路徑</param>
        /// <returns>??</returns>
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileStringA(string section, string key, string def, Byte[] retVal, int size, string filePath);
        //日志類聲明
        SimpleLogRecord log = new SimpleLogRecord();
        //錯誤窗口
        ErrorForm errorForm = new ErrorForm();

        #endregion

        #region 窗體部分
        public Form1()
        {
            InitializeComponent();

        }

        /// <summary>
        /// 窗體加載
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            //檢查ini文件是否存在
            iniFileCheck();
        }

        /// <summary>
        /// 執(zhí)行更新處理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btGO_Click(object sender, EventArgs e)
        {
            //執(zhí)行更新前先驗(yàn)證輸入框
            inputCheck();
            //ini文件備份處理
            backUpFiles();
            //更新PM7.ini文件信息
            setPM7Info();
            //更新HDATE.ini文件信息
            setHDATEInfo();
            //更新VFREPORT.ini文件信息
            setVFREPORTInfo();
            //成功提示
            MessageBox.Show("元號更新成功!");
        }

        /// <summary>
        /// 畫面關(guān)閉
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        #endregion
        
        #region 文件核實(shí)及備份
        /// <summary>
        /// 檢查ini文件存在具體方法
        /// </summary>
        private void iniFileCheck()
        {
            try
            {
                //判斷PMPPGEN.INI文件是否存在
                if (!File.Exists(PMPPGEN_FilePath))
                {
                    MessageBox.Show("環(huán)境ファイル‘PMPPGEN.INI’が見つかりません卧秘。呢袱!");
                    errorForm.ShowDialog();
                }
                //判斷PM7.INI文件是否存在
                if (!File.Exists(PM7_FilePath))
                {
                    MessageBox.Show("更新ファイルファイル‘PM7.INI’が見つかりません。翅敌!");
                    errorForm.ShowDialog();
                }
                //判斷HDATE.INI文件是否存在
                if (!File.Exists(HDATE_FilePath))
                {
                    MessageBox.Show("更新ファイルファイル‘HDATE.INI’が見つかりません羞福。!");
                    errorForm.ShowDialog();
                }
                //判斷VFREPORT.INI文件是否存在
                if (!File.Exists(VFREPORT_FilePath))
                {
                    MessageBox.Show("更新ファイルファイル‘VFREPORT.INI’が見つかりません蚯涮。坯临!");
                    errorForm.ShowDialog();
                }
            }
            catch (Exception ex)
            {
                //日志記錄
                log.WriteLog(ex.Message);
            }
        }
        /// <summary>
        /// 畫面輸入驗(yàn)證
        /// </summary>
        private void inputCheck()
        {
            try
            {
                if (Ed_GENGO.Text == "")
                {
                    MessageBox.Show("新元號が未入力です焊唬!");
                    Ed_GENGO.Focus();
                }
                else if (Ed_GKIGO.Text == "")
                {
                    MessageBox.Show("新元號記號が未入力です!");
                    Ed_GKIGO.Focus();
                }
                else if (Ed_GYY.Text == "")
                {
                    MessageBox.Show("元號開始日が未入力です看靠!");
                    Ed_GYY.Focus();
                }
                else if (Ed_GDD.Text == "")
                {
                    MessageBox.Show("元號開始日が未入力です赶促!");
                    Ed_GDD.Focus();
                }
                else if (Ed_GMM.Text == "")
                {
                    MessageBox.Show("元號開始日が未入力です!");
                    Ed_GMM.Focus();
                }
                else
                {
                    //驗(yàn)證輸入類型
                    string patternYY = @"^[0-9]{4}$";
                    string patternMD = @"^[0-9]{2}$";
                    string patternGengo = @"^[\u4e00-\u9fa5]{2}$";
                    string patternGkigo = @"^[a-zA-Z]$";
                    Match y = Regex.Match(this.Ed_GYY.Text, patternYY);
                    Match m = Regex.Match(this.Ed_GMM.Text, patternMD);
                    Match d = Regex.Match(this.Ed_GDD.Text, patternMD);
                    Match gengoMatch = Regex.Match(this.Ed_GENGO.Text, patternGengo);
                    Match gkigoMatch = Regex.Match(this.Ed_GKIGO.Text, patternGkigo);
                    if (!gengoMatch.Success)
                    {
                        MessageBox.Show("請輸入正確元號挟炬!");
                        this.Ed_GENGO.Text = null;
                        Ed_GENGO.Focus();
                    }
                    else if (!gkigoMatch.Success)
                    {
                        MessageBox.Show("請輸入正確元號符號鸥滨!");
                        this.Ed_GKIGO.Text = null;
                        Ed_GKIGO.Focus();
                    }
                    else if (!y.Success)
                    {
                        MessageBox.Show("請輸入正確年份!");
                        this.Ed_GYY.Text = null;
                        Ed_GYY.Focus();
                    }
                    else if (!m.Success)
                    {
                        MessageBox.Show("請輸入正確月份谤祖!");
                        this.Ed_GMM.Text = null;
                        Ed_GMM.Focus();
                    }
                    else if (!d.Success)
                    {
                        MessageBox.Show("請輸入正確日期婿滓!");
                        this.Ed_GDD.Text = null;
                        Ed_GDD.Focus();
                    }
                }
            }
            catch (Exception ex)
            {
                //日志記錄
                log.WriteLog(ex.Message);
            }
        }
        /// <summary>
        /// 備份ini文件
        /// </summary>
        private void backUpFiles()
        {
            try
            {
                //重命名ini文件并且備份到同一目錄下         
                //string nowTime = Ed_GYY.Text + Ed_GMM.Text + Ed_GDD.Text;
                string newPM7_FileName = "「" + PM7_FileName.Substring(0, PM7_FileName.LastIndexOf('.')) + "_YYYYMMDD」";
                string newHDATE_FileName = "「" + HDATE_FileName.Substring(0, HDATE_FileName.LastIndexOf('.')) + "_YYYYMMDD」";
                string newVFREPORT_FileName = "「" + VFREPORT_FileName.Substring(0, VFREPORT_FileName.LastIndexOf('.')) + "_YYYYMMDD」";
                //備份文件已存在則刪除
                if (File.Exists(Application.StartupPath + "\\" + newPM7_FileName))
                {
                    File.Delete(newPM7_FileName);
                }
                if (File.Exists(Application.StartupPath + "\\" + newHDATE_FileName))
                {
                    File.Delete(newHDATE_FileName);
                }
                if (File.Exists(Application.StartupPath + "\\" + newVFREPORT_FileName))
                {
                    File.Delete(newVFREPORT_FileName);
                }
                //文件備份
                File.Copy(PM7_FileName, newPM7_FileName);
                File.Copy(HDATE_FileName, newHDATE_FileName);
                File.Copy(VFREPORT_FileName, newVFREPORT_FileName);

            }
            catch (Exception ex)
            {
                //日志記錄
                log.WriteLog(ex.Message);
                if (ex.Message.Contains("PM7"))
                {
                    MessageBox.Show("PM7.INIファイルをバックアップに失敗しました!");
                    errorForm.ShowDialog();
                }
                if (ex.Message.Contains("HDATE"))
                {
                    MessageBox.Show("HDATE.INIファイルをバックアップに失敗しました!");
                    errorForm.ShowDialog();
                }
                if (ex.Message.Contains("VFREPORT"))
                {
                    MessageBox.Show("VFREPORT.INIファイルをバックアップに失敗しました!");
                    errorForm.ShowDialog();
                }
            }

        }

        #endregion
        
        #region ini文件更新具體方法
        /// <summary>
        /// 設(shè)置PM7文件節(jié)點(diǎn)信息
        /// </summary>
        private void setPM7Info()
        {
            try
            {
                //獲取PMPPGEN.ini文件中JpnYears節(jié)點(diǎn)下所有key
                List<string> jpnYearsKeys = ReadKeys(JpnYears_Section, PMPPGEN_FilePath);
                //***   [JpnYears]域  ***//
                for (int i = 0; i < jpnYearsKeys.Count; i++)
                {
                    WritePrivateProfileString(JpnYears_Section, jpnYearsKeys[i], ContentValue(JpnYears_Section, jpnYearsKeys[i], PMPPGEN_FilePath), PM7_FilePath);
                }
                WritePrivateProfileString(JpnYears_Section, Ed_GENGO.Text, Ed_GYY.Text, PM7_FilePath);

                //***   [WDATETIM]域  ***//
                //獲取PMPPGEN.ini文件中WDATETIM節(jié)點(diǎn)下所有key
                List<string> wdatetimKeys = ReadKeys(WDATETIM_Section, PMPPGEN_FilePath);
                for (int i = 0; i < wdatetimKeys.Count; i++)
                {
                    WritePrivateProfileString(WDATETIM_Section, wdatetimKeys[i], ContentValue(WDATETIM_Section, wdatetimKeys[i], PMPPGEN_FilePath), PM7_FilePath);
                }
                WritePrivateProfileString(WDATETIM_Section, Ed_GYY.Text, Ed_GKIGO.Text + Ed_GENGO.Text, PM7_FilePath);

                //***   [cpGENGO]域  ***//
                //獲取GENGO節(jié)點(diǎn)下所有key
                List<string> gengoKeys = ReadKeys(GENGO_Section, PMPPGEN_FilePath);
                WritePrivateProfileString(PM7_Section, gengoKeys[0], ContentValue(GENGO_Section, gengoKeys[0], PMPPGEN_FilePath) + "," + Ed_GENGO.Text, PM7_FilePath);
                for (int i = 1; i < 4; i++)
                {
                    WritePrivateProfileString(PM7_Section, gengoKeys[i], ContentValue(GENGO_Section, gengoKeys[i], PMPPGEN_FilePath), PM7_FilePath);
                }
                //獲取截至日期
                string newEndYY = ContentValue(GENGO_Section, "NewEndYY", PMPPGEN_FilePath);
                string newEndYMD = ContentValue(GENGO_Section, "NewEndYMD", PMPPGEN_FilePath);
                string newChkS = ContentValue(GENGO_Section, "NewChkS", PMPPGEN_FilePath);
                string newChkE = ContentValue(GENGO_Section, "NewChkE", PMPPGEN_FilePath);
                string newInfo = Ed_GYY.Text + "," + newEndYY + "," + Ed_GYY.Text + Ed_GMM.Text + Ed_GDD.Text + "," + newEndYMD + "," + Ed_GKIGO.Text.ToUpper() + "," + Ed_GKIGO.Text.ToLower() + "," + newChkS + "," + newChkE;
                WritePrivateProfileString(PM7_Section, Ed_GENGO.Text, newInfo, PM7_FilePath);

            }
            catch (Exception ex)
            {
                //日志記錄
                log.WriteLog(ex.Message);
                //更新失敗提示
                MessageBox.Show("PM7.INIファイルを更新に失敗しました!");
                //文件恢復(fù)處理
                fileRecovery();
                //錯誤提示
                errorForm.ShowDialog();
            }
        }

        /// <summary>
        /// 設(shè)置HDATE文件中節(jié)點(diǎn)信息
        /// </summary>
        private void setHDATEInfo()
        {
            try
            {
               //獲取PMPPGEN文件信息
                string pmppInfo = ContentValue(GENGO_Section, "NAME", PMPPGEN_FilePath);
                string[] gengoName = pmppInfo.Split(',');
                string[] infoArray = new string[3];
                //***   固定行更新   ****************************************************//
                for (int i = 0; i < 3; i++)
                {
                    infoArray[i] = ContentValue(GENGO_Section, gengoName[i], PMPPGEN_FilePath);
                    string[] newArray = infoArray[i].Split(',');
                    //開始年號
                    int startYear = Convert.ToInt16(newArray[2].Substring(0, 4)) - 1;
                    WritePrivateProfileString(HDATE_Section, gengo + (i + 1), gengoName[i], HDATE_FilePath);
                    WritePrivateProfileString(HDATE_Section, ryaku + (i + 1), newArray[4], HDATE_FilePath);
                    WritePrivateProfileString(HDATE_Section, startTime + (i + 1), newArray[2], HDATE_FilePath);
                    WritePrivateProfileString(HDATE_Section, endTime + (i + 1), newArray[3], HDATE_FilePath);
                    WritePrivateProfileString(HDATE_Section, nensa + (i + 1), startYear.ToString(), HDATE_FilePath);
                }
                //***   最新行更新   ****************************************************//
                int startYearEnd = Convert.ToInt16(Ed_GYY.Text) - 1;
                WritePrivateProfileString(HDATE_Section, gengo + "4", Ed_GENGO.Text, HDATE_FilePath);
                WritePrivateProfileString(HDATE_Section, ryaku + "4", Ed_GKIGO.Text, HDATE_FilePath);
                WritePrivateProfileString(HDATE_Section, startTime + "4", Ed_GYY.Text + Ed_GMM.Text + Ed_GDD.Text, HDATE_FilePath);
                WritePrivateProfileString(HDATE_Section, endTime + "4", ContentValue(GENGO_Section,"NewEndYMD",PMPPGEN_FilePath), HDATE_FilePath);
                WritePrivateProfileString(HDATE_Section, nensa + "4", startYearEnd.ToString(), HDATE_FilePath);
            }
            catch (Exception ex)
            {
                //日志記錄
                log.WriteLog(ex.Message);
                //更新失敗提示
                MessageBox.Show("HDATE.INIファイルファイルを更新に失敗しました!");
                //文件恢復(fù)處理
                fileRecovery();
                //錯誤提示
                errorForm.ShowDialog();
            }
        }
        /// <summary>
        /// 設(shè)置VFREPORT文件中節(jié)點(diǎn)信息
        /// </summary>
        private void setVFREPORTInfo()
        {
            try
            {
                //獲取PMPPGEN文件信息
                string pmppInfo = ContentValue(GENGO_Section, "NAME", PMPPGEN_FilePath);
                string[] gengoName = pmppInfo.Split(',');
                int sectionSuffix = gengoName.Length;
                string[] infoArray = new string[sectionSuffix];
                string nengouValue;
                //***   固定行更新   ****************************************************//
                for (int i = 0; i < 3; i++)
                {
                    infoArray[i] = ContentValue(GENGO_Section, gengoName[i], PMPPGEN_FilePath);
                    nengouValue = gengoName[i] + infoArray[i].Split(',')[4] + " " + infoArray[i].Split(',')[3];
                    WritePrivateProfileString(VFREPORT_Section, nengou + (i + 1), nengouValue, VFREPORT_FilePath);
                }
                //***   最新行更新   ****************************************************//
                string updateInfo = Ed_GENGO.Text + Ed_GKIGO.Text.ToUpper() + " " + Ed_GYY.Text + Ed_GMM.Text + Ed_GDD.Text;
                WritePrivateProfileString(VFREPORT_Section, nengou + "4", updateInfo, VFREPORT_FilePath);

            }
            catch (Exception ex)
            {
                //日志記錄
                log.WriteLog(ex.Message);
                //更新失敗提示
                MessageBox.Show("VFREPORT.INIファイルファイルを更新に失敗しました!");
                //文件恢復(fù)處理
                fileRecovery();
                //錯誤提示
                errorForm.ShowDialog();
            }
        }
        #endregion
        
        #region 獲取ini文件相關(guān)信息具體方法
        //根據(jù)節(jié)點(diǎn)對應(yīng)key值獲取value
        private string ContentValue(string section, string key, string filePath)
        {
            StringBuilder temp = new StringBuilder(1024);
            GetPrivateProfileString(section, key, "", temp, 1024, filePath);
            return temp.ToString();
        }
        //根據(jù)節(jié)點(diǎn)和文件名獲取所有key
        public List<string> ReadKeys(string SectionName, string iniFileName)
        {
            List<string> result = new List<string>();
            Byte[] buf = new byte[65535];
            int len = GetPrivateProfileStringA(SectionName, null, null, buf, buf.Length, iniFileName);
            int j = 0;
            for (int i = 0; i < len; i++)
            {
                if (buf[i] == 0)
                {
                    result.Add(Encoding.Default.GetString(buf, j, i - j));
                    j = i + 1;
                }
            }
            return result;
        }
        #endregion

        #region   畫面自動校正相關(guān)事件
        //元號驗(yàn)證事件
        private void Ed_GENGO_Leave(object sender, EventArgs e)
        {

        }
        //略號驗(yàn)證事件
        private void Ed_GKIGO_Leave(object sender, EventArgs e)
        {
            Ed_GKIGO.Text = Ed_GKIGO.Text.ToUpper();
        }
        //年份驗(yàn)證事件
        private void Ed_GYY_Leave(object sender, EventArgs e)
        {
            try
            {
                int yy = Convert.ToInt16(Ed_GYY.Text.Trim());
                if (yy < 2019)
                {
                    MessageBox.Show("當(dāng)前元號開始年小于前一元號開始年!");
                }
            }
            catch (Exception)
            {
            }
        }
        //月份驗(yàn)證事件
        private void Ed_GMM_Leave(object sender, EventArgs e)
        {
            try
            {
                int mm = Convert.ToInt16(Ed_GMM.Text.Trim());
                if (mm > 12)
                {
                    Ed_GMM.Text = "12";
                }
            }
            catch (Exception)
            {

            }
        }
        //日期驗(yàn)證事件
        private void Ed_GDD_Leave(object sender, EventArgs e)
        {
            try
            {
                int yy = Convert.ToInt16(Ed_GYY.Text.Trim());
                int mm = Convert.ToInt16(Ed_GMM.Text.Trim());
                int dd = Convert.ToInt16(Ed_GDD.Text.Trim());
                if (mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12)
                {
                    if (dd>31)
                    {
                        Ed_GDD.Text = "31";
                    }
                    
                }
                if (mm == 4 ||mm == 6 ||mm == 9 ||mm == 11)
                {
                    if (dd>30)
                    {
                        Ed_GDD.Text = "30"; 
                    }
                }
                if (mm==2)
                {
                    if (yy % 4 == 0 && yy % 100 != 0 || yy % 400 == 0)
                    {
                        if (dd>29)
                        {
                            Ed_GDD.Text = "29";
                        }
                    }
                    else
                    {
                        if (dd > 28)
                        {
                            Ed_GDD.Text = "28";
                        } 
                    }
                }
            }
            catch (Exception)
            {

            }
        }
        #endregion

        #region 文件恢復(fù)處理
        /// <summary>
        /// 文件恢復(fù)處理
        /// </summary>
        private void fileRecovery()
        {
            try
            {
                //文件更新異常粥喜,首先刪除文件
                File.Delete(PM7_FilePath);
                File.Delete(HDATE_FilePath);
                File.Delete(VFREPORT_FilePath);
                //重命名備份文件
                Computer MyComputer = new Computer();
                MyComputer.FileSystem.RenameFile("「PM7_YYYYMMDD」", "PM7.ini");
                MyComputer.FileSystem.RenameFile("「HDATE_YYYYMMDD」", "HDATE.ini");
                MyComputer.FileSystem.RenameFile("「VFREPORT_YYYYMMDD」", "VFREPORT.ini");
            }
            catch (Exception ex)
            {
                //日志記錄
                log.WriteLog(ex.Message);
            }
        }
        #endregion
        
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凸主,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子额湘,更是在濱河造成了極大的恐慌卿吐,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锋华,死亡現(xiàn)場離奇詭異嗡官,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)毯焕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進(jìn)店門衍腥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纳猫,你說我怎么就攤上這事婆咸。” “怎么了芜辕?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵尚骄,是天一觀的道長。 經(jīng)常有香客問我物遇,道長,這世上最難降的妖魔是什么憾儒? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任询兴,我火速辦了婚禮,結(jié)果婚禮上起趾,老公的妹妹穿的比我還像新娘诗舰。我一直安慰自己,他們只是感情好训裆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布眶根。 她就那樣靜靜地躺著蜀铲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪属百。 梳的紋絲不亂的頭發(fā)上记劝,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機(jī)與錄音族扰,去河邊找鬼厌丑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛渔呵,可吹牛的內(nèi)容都是我干的怒竿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼扩氢,長吁一口氣:“原來是場噩夢啊……” “哼耕驰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起录豺,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤朦肘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后巩检,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體厚骗,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年兢哭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了领舰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片灾部。...
    茶點(diǎn)故事閱讀 39,745評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喜喂,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镊靴,到底是詐尸還是另有隱情矩父,我是刑警寧澤锉桑,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站窍株,受9級特大地震影響民轴,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜球订,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一后裸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧冒滩,春花似錦微驶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽苟耻。三九已至,卻和暖如春扶檐,著一層夾襖步出監(jiān)牢的瞬間凶杖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工蘸秘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留官卡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓醋虏,卻偏偏與公主長得像寻咒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子颈嚼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,652評論 2 354