本文共 2770 字,大约阅读时间需要 9 分钟。
我们在对文件进行读写操作时首先需要把文件转换成文件流(FileStream)对象。Stream类及其派生类(包括FileStream类)都提供了Read和Write方法,可支持在字节级别对数据进行读写。假如我们的程序需要将字符数据写入到流中,需要先将字符数据转换为字节数据之后才能将数据写入到流中。所以.NET为我们提供了一下更方便的支持对流进行读写的类:和、和。
BinaryWriter:以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。
BinaryReader:用特定的编码将基元数据类型读作二进制值。
下面是示例代码:
1 public static void WriterReadFile(string filePath) 2 { 3 FileStream fs = null; 4 if (File.Exists(filePath)) 5 { 6 Console.WriteLine("文件已存在."); 7 //return; 8 } 9 using (fs = new FileStream(filePath, FileMode.Create))10 {11 BinaryWriter bw = new BinaryWriter(fs);12 for (int i = 0; i <= 10; i++)13 {14 bw.Write(i);15 }16 }17 using (fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))18 {19 BinaryReader br = new BinaryReader(fs);20 for (int i = 0; i <= 10; i++)21 {22 Console.WriteLine(br.ReadInt32());23 }24 }25 }
StreamWriter:实现一个 ,使其以一种特定的编码向流中写入字符。
StreamReader:实现从字符串进行读取的 。
下面是示例代码:
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 //如果文件不存在则创建文件 6 using (StreamWriter sw = File.AppendText("log.txt")) 7 { 8 WriteLog("日志1", sw); 9 WriteLog("日志2", sw);10 sw.Close();11 }12 using (StreamReader sr = File.OpenText("log.txt"))13 {14 ReadLog(sr);15 }16 17 Console.Read();18 }19 20 ///21 /// 记录日志22 /// 23 /// 日志信息24 /// StreamWriter父类对象25 public static void WriteLog(string logMessage, TextWriter sw)26 {27 sw.Write("Log 开始:");//在.Net 4.5提供了异步读写方法28 sw.WriteLine("{0} {1}",DateTime.Now.ToLongTimeString(),DateTime.Now.ToLongDateString());29 sw.WriteLine(" :");30 sw.WriteLine(" :{0}", logMessage);31 sw.WriteLine("-----------------------------");32 //更新文件文本33 sw.Flush();34 }35 36 ///37 /// 读取日志38 /// 39 /// 40 public static void ReadLog(StreamReader sr)41 {42 string line;43 while((line =sr.ReadLine())!=null)44 {45 Console.WriteLine(line);46 }47 sr.Close();48 }49 }
猛击下载:
参考资料:
本文转自gyzhao博客园博客,原文链接:http://www.cnblogs.com/IPrograming/archive/2012/08/30/Base_IO_2.html,如需转载请自行联系原作者