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