C#读写txt文件
利用StreamWriter类和StreamReader类实现读写txt文件
1. StreamWriter有7个构造函数
(1) StreamWriter(Stream) // 用 UTF-8 编码及默认缓冲区大小,为指定的流初始化 StreamWriter 类的一个新实例。
//FileStream stream = new FileStream(@"D:\a.txt",FileMode.CreateNew);
(2) StreamWriter (String) // 使用默认编码和缓冲区大小,为指定路径上的指定文件初始化StreamWriter 类的新实例。
(3) StreamWriter (Stream, Encoding) // 用指定的编码及默认缓冲区大小,为指定的流初始化 StreamWriter 类的新实例。(默认写入编码为UTF8)
(4) StreamWriter (String, Boolean) // 使用默认编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。
//true表示如果该文件存在,则可以向其追加。false表示将其全部重写。如果该文件不存在,则此构造函数将创建一个新文件。(本例中使用)
(5) StreamWriter (Stream, Encoding, Int32) // 用指定的编码及缓冲区大小,为指定的流初始化 StreamWriter 类的新实例。int为缓冲区大小
(6) StreamWriter (String, Boolean, Encoding) // 使用指定编码和默认缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。
//true表示如果该文件存在,则可以向其追加。false表示将其全部重写。如果该文件不存在,则此构造函数将创建一个新文件。
(7) StreamWriter (String, Boolean, Encoding, Int32) // 使用指定编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。
//true表示如果该文件存在,则可以向其追加。false表示将其全部重写。如果该文件不存在,则此构造函数将创建一个新文件。
2. StreamWriter的方法
(1) Write(string) //直接将string写入到文件中
(2) WriteLine(string) //写完string加了一个回车换行
(3) Close() // 关闭当前的 StreamWriter 对象和基础流
3.StreamReader的构造函数
(1) StreamReader(Stream) //为指定的流初始化 StreamReader 类的新实例。
(2)StreamReader(String) //为指定的文件名初始化 StreamReader 类的新实例。 (本例中使用)
(3)StreamReader(Stream, Boolean) //用指定的字节顺序标记检测选项,为指定的流初始化 StreamReader 类的一个新实例。
(4)StreamReader(Stream, Encoding) //用指定的字符编码为指定的流初始化 StreamReader 类的一个新实例。
(5)StreamReader(String, Boolean) //为指定的文件名初始化 StreamReader 类的新实例,带有指定的字节顺序标记检测选项。
(6)StreamReader(String, Encoding) //用指定的字符编码,为指定的文件名初始化 StreamReader 类的一个新实例。
(7)StreamReader(Stream, Encoding, Boolean) //为指定的流初始化 StreamReader 类的新实例,带有指定的字符编码和字节顺序标记检测选项。
(8)StreamReader(String, Encoding, Boolean) //为指定的文件名初始化 StreamReader 类的新实例,带有指定的字符编码和字节顺序标记检测选项。
(9)StreamReader(Stream, Encoding, Boolean, Int32) //为指定的流初始化 StreamReader 类的新实例,带有指定的字符编码、字节顺序标记检测选项和缓冲区大小。
(10)StreamReader(String, Encoding, Boolean, Int32) //为指定的文件名初始化 StreamReader 类的新实例,带有指定字符编码、字节顺序标记检测选项和缓冲区大小。
4.StreamReader的方法
(1) ReadLine() //从当前流中读取一行字符并将数据作为字符串返回。
(2) Read() //单字符读取
(3) Dispose() //释放非托管资源,例如文件句柄,网络连接等。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.IO; 6 using System.Text; 7 8 namespace pmu.Models 9 { 10 public class LogSave 11 { 12 //创建日志 + 更新日志 13 public bool CreateLogTxt(string msg) 14 { 15 string strPath; 16 DateTime dateTime = DateTime.Now; 17 try 18 { 19 //strPath = Directory.GetCurrentDirectory() + "\\Log";//winform工程\bin\目录下创建日志文件夹 获取应用程序的当前工作目录。 20 strPath = "D:\\PMU\\test\\op_save\\Log"; 22 if (Directory.Exists(strPath) == false) //判断文件夹是否存在 如果 strPath 引用现有目录,则为 true;否则为 false。 23 { 24 Directory.CreateDirectory(strPath); //创建文件夹 25 } 26 27 strPath = strPath + "\\" + dateTime.ToString("yyyy"); 28 if (Directory.Exists(strPath) == false) 29 { 30 Directory.CreateDirectory(strPath); 31 } 32 33 strPath = strPath + "\\" + dateTime.Year.ToString() + "-"
+ dateTime.Month.ToString() + "-" + dateTime.Day.ToString() +".txt"; 34 35 StreamWriter FileWriter = new StreamWriter(strPath, true); //创建日志文件 36 FileWriter.WriteLine("[" + dateTime.ToString("yyyy-MM-dd HH:mm:ss") + "] " + msg); 37 FileWriter.Close(); 38 return true; 39 } 40 catch (Exception ex) 41 { 42 string str = ex.Message.ToString(); 43 return false; 44 } 45 } 46 47 //读取日志 48 public string ReadLogTxt(string fileName) 49 { 52 string filePath = "D:\\PMU\\test\\op_save\\Log"; 53 string strYear = fileName.Substring(0, 4); 54 filePath = filePath + "\\" + strYear + "\\" + fileName; 55 56 if (System.IO.File.Exists(filePath) == false) //判断文件是否存在 57 { 58 return null; 59 } 60 StreamReader streamReader = new StreamReader(filePath); 61 62 string str = ""; 63 string strLine = streamReader.ReadLine(); 64 while ((strLine) != null) 65 { 66 67 str += strLine.ToString() + "<br/>"; 68 strLine = streamReader.ReadLine(); 69 70 } 71 streamReader.Close(); 72 streamReader.Dispose(); 73 return str; 74 } 75 } 76 }
ps:这两个类还有些方法和属性没用到,以后再更新