源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

asp. net下使用foreach简化文本文件的访问。

  • 时间:2021-02-05 18:19 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:asp. net下使用foreach简化文本文件的访问。
       很多时候,我们总是按照行的方式访问文本文件,使用foreach语句能够极大地简化访问逻辑:例如:  foreach (string line in new LineReader(”c:abc.txt”))    Console.WriteLine(line);  完整代码如下:  using System;  using System.IO;  using System.Text;  using System.Collections;  namespace Forks.Utils.IO  {      public struct LineReader : IDisposable      {      public LineReader(string file, Encoding encoding) : this(file, encoding, false)          {      }      public LineReader(string file, Encoding encoding, bool ignoreBlankLines) : this(new FileStream(file, FileMode.Open, FileAccess.Read, FileShare.Read), encoding, ignoreBlankLines)      {      }      public LineReader(Stream stream, Encoding encoding) : this(stream, encoding, false)      {      }      public LineReader(Stream stream, Encoding encoding, bool ignoreBlankLines) : this(new StreamReader(stream, encoding), ignoreBlankLines)      {      }      public LineReader(TextReader reader) : this(reader, false)      {      }      TextReader mReader;      bool mIgnoreBlankLines;      public LineReader(TextReader reader, bool ignoreBlankLines)      {        mReader = reader;        mIgnoreBlankLines = ignoreBlankLines;        mCurrent = null;      }      public LineReader GetEnumerator()      {        return this;      }      public void Reset()      {        throw new NotSupportedException("LineReaderÖ»ÄܶÁȡһ´Î");      }      string mCurrent;      public string Current      {        get        {          return mCurrent;        }      }      public bool MoveNext()      {        do        {          mCurrent = mReader.ReadLine();        }while (mIgnoreBlankLines && mCurrent != null && mCurrent.Length == 0);        return mCurrent != null;      }      public void Dispose()      {        mReader.Close();      }    }  }  测试代码:  using System;  using System.IO;  using System.Text;  using NUnit.Framework;  using Forks.Test;  namespace Forks.Utils.IO  {    [TestFixture]      public class LineReaderTest      {      const string TestLines = @"abc asd ewr afa e     start with blanks  end with blanks     ºº×Öabc123!@#  end of text!";      [Test]      public void ReadFromReader()      {        doTest(new LineReader(new StringReader(TestLines)));      }      [Test]      public void ReadFromFile()      {        string file = Path.GetTempFileName();        try        {          StringUtil.SaveToFile(TestLines, file, Encoding.GetEncoding("gb2312"));          doTest(new LineReader(file, Encoding.GetEncoding("gb2312")));        }        finally        {          FileUtil.SafeDelete(file);        }      }      [Test]      public void ReadFromStream()      {        string file = Path.GetTempFileName();        try        {          StringUtil.SaveToFile(TestLines, file, Encoding.GetEncoding("gb2312"));          using (Stream stream = new FileStream(file, FileMode.Open))            doTest(new LineReader(stream, Encoding.GetEncoding("gb2312")));        }        finally        {          FileUtil.SafeDelete(file);        }      }      void doTest(LineReader reader)      {        StringBuilder sb = new StringBuilder();        foreach (string line in reader)          sb.Append(line + Environment.NewLine);        Assert.AreEqual(TestLines + Environment.NewLine, sb.ToString());      }      [Test]      public void IgnoreBlankLine()      {        foreach (string line in new LineReader(new StringReader(TestLines), true))          Assert.IsTrue(line.Length != 0);      }      }  } 
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部