.NET I/O 学习笔记:文件的读和写

  我们在对文件进行读写操作时首先需要把文件转换成文件流(FileStream)对象。Stream类及其派生类(包括FileStream类)都提供了Read和Write方法,可支持在字节级别对数据进行读写。假如我们的程序需要将字符数据写入到流中,需要先将字符数据转换为字节数据之后才能将数据写入到流中。所以.NET为我们提供了一下更方便的支持对流进行读写的类:BinaryWriterBinaryReaderStreamWriterStreamReader

1.使用BinaryWriter 和 BinaryReader 对象

  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         }

 

2.使用StreamWriter和StreamReader对象 

  StreamWriter实现一个 TextWriter,使其以一种特定的编码向流中写入字符。

  StreamReader实现从字符串进行读取的 TextReader

 

下面是示例代码:

 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         /// <summary>
21         /// 记录日志
22         /// </summary>
23         /// <param name="logMessage">日志信息</param>
24         /// <param name="sw">StreamWriter父类对象</param>
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         /// <summary>
37         /// 读取日志
38         /// </summary>
39         /// <param name="sr"></param>
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     }

 

猛击下载:示例源码

参考资料:

http://msdn.microsoft.com/zh-cn/library/36b93480(v=vs.100)

http://msdn.microsoft.com/zh-cn/library/3zc0w663(v=vs.100)

作者:晴天猪

出处:http://www.cnblogs.com/IPrograming 

本文版权归作者和博客园共有,转载请注明出处。

posted @ 2012-08-30 14:17  gyzhao  阅读(2047)  评论(0编辑  收藏  举报