zoukankan      html  css  js  c++  java
  • .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 

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

  • 相关阅读:
    javaScript第一篇
    数据结构与算法学习笔记2018-01-30
    各种编程技术文章收集链接
    git最简单直接粗爆与github教程
    Word2Vec原理之Negative Sample
    Word2Vec原理之层次Softmax算法
    统计语言模型
    各种优化方法总结比较(sgd/momentum/Nesterov/adagrad/adadelta)
    TensorBoard:可视化学习
    Batch Normalization
  • 原文地址:https://www.cnblogs.com/IPrograming/p/Base_IO_2.html
Copyright © 2011-2022 走看看