一文搞懂C#實現(xiàn)讀寫文本文件中的數(shù)據(jù)
【1】首先我們定義一段假數(shù)據(jù),這里以一個string為例字
static void Main(string[] args) { string data = "我的數(shù)據(jù)要開始存入文件了,我好開心啊!覆蓋了嗎?好像覆蓋了,真的覆蓋了"; }
【2】接著我們將這個數(shù)據(jù)寫入.txt文件
代碼如下:
/// <summary> /// 保存數(shù)據(jù)data到文件的處理過程; /// </summary> /// <param name="data"></param> public static String SavaProcess(string data) { System.DateTime currentTime = System.DateTime.Now; //獲取當前日期的前一天轉(zhuǎn)換成ToFileTime string strYMD = currentTime.AddDays(-1).ToString("yyyyMMdd"); //按照日期建立一個文件名 string FileName = "MyFileSend" + strYMD + ".txt"; //設(shè)置目錄 string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"SaveDir"; //判斷路徑是否存在 if(!System.IO.Directory.Exists(CurDir)){ System.IO.Directory.CreateDirectory(CurDir); } //不存在就創(chuàng)建 String FilePath = CurDir + FileName; //文件覆蓋方式添加內(nèi)容 System.IO.StreamWriter file = new System.IO.StreamWriter(FilePath,false); //保存數(shù)據(jù)到文件 file.Write(data); //關(guān)閉文件 file.Close(); //釋放對象 file.Dispose(); return FilePath; }
結(jié)果是返回一個文件路徑,根據(jù)具體場合可返回,也可不返回;我們來測試一下文件是否生成成功,我們在Main函數(shù)中調(diào)用這個方法,代碼如下:
static void Main(string[] args) { string data = "我的數(shù)據(jù)要開始存入文件了,我好開心?。「采w了嗎?好像覆蓋了,真的覆蓋了"; String filePath = SavaProcess(data); Console.WriteLine(filePath); }
運行結(jié)果如下:
很顯然,在相關(guān)目錄下,生成了想對應(yīng)的文件;我們在看看cmd中打印出了如下路徑:
D:\VSProject\SavaProcessToFile\SavaProcessToFile\bin\Debug\SaveDirMyFileSend20170628.txt
生成的這個路徑對我們接下來的工作很重要,讀取文本數(shù)據(jù)的時候需要用到;
【3】讀取.txt文件數(shù)據(jù)
我們再定義一個讀取數(shù)據(jù)的方法:
/// <summary> /// 獲取文件中的數(shù)據(jù) /// </summary> /// <param name="args"></param> public static string fileToString( String filePath ){ string strData = ""; try { string line; // 創(chuàng)建一個 StreamReader 的實例來讀取文件 ,using 語句也能關(guān)閉 StreamReader using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath)) { // 從文件讀取并顯示行,直到文件的末尾 while ((line = sr.ReadLine()) != null) { //Console.WriteLine(line); strData = line; } } } catch (Exception e) { // 向用戶顯示出錯消息 Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } return strData; }
看見沒?我們這邊傳入的參數(shù)就是生成文件的那個路徑,注意,參數(shù)的類型是String表示文本的,而不是string表示字符串的,因為我再生成路徑的時候就是用的String,所以這里對應(yīng)起來;
接下來,我們來測試一下,看我們有沒有讀取文件成功,看cmd中是否會出現(xiàn)我們最初寫入的那個字符串?我們在Main函數(shù)中調(diào)用方法,代碼如下:
static void Main(string[] args) { string data = "我的數(shù)據(jù)要開始存入文件了,我好開心?。「采w了嗎?好像覆蓋了,真的覆蓋了"; String filePath = SavaProcess(data); string strData = fileToString(filePath); Console.WriteLine(strData); }
運行結(jié)果如下:
結(jié)果出現(xiàn)了最開始存的那個字符串;
【4】寫入和讀取過程完整代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace SavaProcessToFile { class Program { /// <summary> /// 保存數(shù)據(jù)data到文件的處理過程; /// </summary> /// <param name="data"></param> public static String SavaProcess(string data) { System.DateTime currentTime = System.DateTime.Now; //獲取當前日期的前一天轉(zhuǎn)換成ToFileTime string strYMD = currentTime.AddDays(-1).ToString("yyyyMMdd"); //按照日期建立一個文件名 string FileName = "MyFileSend" + strYMD + ".txt"; //設(shè)置目錄 string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"SaveDir"; //判斷路徑是否存在 if(!System.IO.Directory.Exists(CurDir)){ System.IO.Directory.CreateDirectory(CurDir); } //不存在就創(chuàng)建 String FilePath = CurDir + FileName; //文件覆蓋方式添加內(nèi)容 System.IO.StreamWriter file = new System.IO.StreamWriter(FilePath,false); //保存數(shù)據(jù)到文件 file.Write(data); //關(guān)閉文件 file.Close(); //釋放對象 file.Dispose(); return FilePath; } /// <summary> /// 獲取文件中的數(shù)據(jù) /// </summary> /// <param name="args"></param> public static string fileToString(String filePath){ string strData = ""; try { string line; // 創(chuàng)建一個 StreamReader 的實例來讀取文件 ,using 語句也能關(guān)閉 StreamReader using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath)) { // 從文件讀取并顯示行,直到文件的末尾 while ((line = sr.ReadLine()) != null) { //Console.WriteLine(line); strData = line; } } } catch (Exception e) { // 向用戶顯示出錯消息 Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } return strData; } static void Main(string[] args) { string data = "我的數(shù)據(jù)要開始存入文件了,我好開心??!覆蓋了嗎?好像覆蓋了,真的覆蓋了"; String filePath = SavaProcess(data); string strData = fileToString(filePath); Console.WriteLine(strData); } } }
以上就是C#實現(xiàn)讀寫文本文件中的數(shù)據(jù)的詳細內(nèi)容,更多關(guān)于C#讀寫文本文件數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!