一文搞懂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其它相關文章!

推薦閱讀: