c# 读取记事本txt文档到DataTable中
有时候我们仅仅需要用到简单的几个数据,没有必要在数据库中建立单独的表去存储这些数据然后去连接数据库等等。
例如:我们的程序中只需要给几个人定时发送邮件,而这几个人的邮件地址则可以放到txt文档中,然后读取出来即可。
从txt读取出来的数据,最好放到DataTable返回,这样主程序中就可以遍历DataTable。
之前有想到把这些数据放到数组中,但是这些数据的长度不定,所以定义数组存在不确定性,最好的选择还是DataTable,代码如下:
记事本路径:
//添加引用
using System.Data.SqlClient;
using System.IO;
//记事本路径(最好用相对路径) public static string strNoCheckGroup = @"..\..\MailAddress\MailAddress.txt";
//ReadTXT public static System.Data.DataTable ReadTXT(string dirTXT) { StreamReader objReader = new StreamReader(dirTXT); System.Data.DataTable dt = new System.Data.DataTable(); dt.Columns.Add("DN", System.Type.GetType("System.String")); string sLine = ""; while (sLine != null) { sLine = objReader.ReadLine(); if (sLine != null && !sLine.Equals("")) { DataRow dr = dt.NewRow(); dr["DN"] = sLine; dt.Rows.Add(dr); } } objReader.Close(); return dt; } //WriteTXT public static void WriteTXT(string dirTXT, System.Data.DataTable dt) { FileStream fs = new FileStream(dirTXT, FileMode.Create); StreamWriter sw = new StreamWriter(fs); //开始写入 for (int i = 0; i < dt.Rows.Count; i++) { sw.Write(dt.Rows[i][0].ToString() + " " + dt.Rows[i][1].ToString() + " " + dt.Rows[i][2].ToString() + " " + dt.Rows[i][3].ToString() + " " + dt.Rows[i][4].ToString() + "\r\n"); } //清空缓冲区 sw.Flush(); //关闭流 sw.Close(); fs.Close(); } //WriteTXT public static void WriteStringToTXT(string dirTXT, string str) { FileStream fs = new FileStream(dirTXT, FileMode.Create); StreamWriter sw = new StreamWriter(fs); //开始写入 sw.Write(str + "\r\n"); //清空缓冲区 sw.Flush(); //关闭流 sw.Close(); fs.Close(); }
读取string字段存放到List<string> 中,获得电脑IP地址(多张网卡):
public static List<string> ipList = new List<string>(); public static void IpAddress() { try { string localIP = ""; System.Net.IPAddress[] addressList = Dns.GetHostEntry(Dns.GetHostName()).AddressList; foreach (IPAddress ip in addressList) { if (ip.AddressFamily == AddressFamily.InterNetwork) { localIP = ip.ToString(); ipList.Add(localIP); } } } catch (Exception) { ipList.Add("0.0.0.0"); } } public static void GetIPAddress() { IpAddress(); for (int i = 0; i < ipList.Count; i++) { Console.WriteLine(ipList[i]); } }