手机
当前位置:查字典教程网 >编程开发 >asp.net教程 >asp. net下使用foreach简化文本文件的访问。
asp. net下使用foreach简化文本文件的访问。
摘要:很多时候,我们总是按照行的方式访问文本文件,使用foreach语句能够极大地简化访问逻辑:例如:foreach(stringlineinne...

很多时候,我们总是按照行的方式访问文本文件,使用foreach语句能够极大地简化访问逻辑:例如:

foreach(stringlineinnewLineReader(”c:abc.txt”))

Console.WriteLine(line);

完整代码如下:

usingSystem;

usingSystem.IO;

usingSystem.Text;

usingSystem.Collections;

namespaceForks.Utils.IO

{

publicstructLineReader:IDisposable

{

publicLineReader(stringfile,Encodingencoding):this(file,encoding,false)

{

}

publicLineReader(stringfile,Encodingencoding,boolignoreBlankLines):this(newFileStream(file,FileMode.Open,FileAccess.Read,FileShare.Read),encoding,ignoreBlankLines)

{

}

publicLineReader(Streamstream,Encodingencoding):this(stream,encoding,false)

{

}

publicLineReader(Streamstream,Encodingencoding,boolignoreBlankLines):this(newStreamReader(stream,encoding),ignoreBlankLines)

{

}

publicLineReader(TextReaderreader):this(reader,false)

{

}

TextReadermReader;

boolmIgnoreBlankLines;

publicLineReader(TextReaderreader,boolignoreBlankLines)

{

mReader=reader;

mIgnoreBlankLines=ignoreBlankLines;

mCurrent=null;

}

publicLineReaderGetEnumerator()

{

returnthis;

}

publicvoidReset()

{

thrownewNotSupportedException("LineReaderÖ»ÄܶÁÈ¡Ò»´Î");

}

stringmCurrent;

publicstringCurrent

{

get

{

returnmCurrent;

}

}

publicboolMoveNext()

{

do

{

mCurrent=mReader.ReadLine();

}while(mIgnoreBlankLines&&mCurrent!=null&&mCurrent.Length==0);

returnmCurrent!=null;

}

publicvoidDispose()

{

mReader.Close();

}

}

}

测试代码:

usingSystem;

usingSystem.IO;

usingSystem.Text;

usingNUnit.Framework;

usingForks.Test;

namespaceForks.Utils.IO

{

[TestFixture]

publicclassLineReaderTest

{

conststringTestLines=@"abcasdewrafae

startwithblanks

endwithblanks

ºº×Öabc123!@#

endoftext!";

[Test]

publicvoidReadFromReader()

{

doTest(newLineReader(newStringReader(TestLines)));

}

[Test]

publicvoidReadFromFile()

{

stringfile=Path.GetTempFileName();

try

{

StringUtil.SaveToFile(TestLines,file,Encoding.GetEncoding("gb2312"));

doTest(newLineReader(file,Encoding.GetEncoding("gb2312")));

}

finally

{

FileUtil.SafeDelete(file);

}

}

[Test]

publicvoidReadFromStream()

{

stringfile=Path.GetTempFileName();

try

{

StringUtil.SaveToFile(TestLines,file,Encoding.GetEncoding("gb2312"));

using(Streamstream=newFileStream(file,FileMode.Open))

doTest(newLineReader(stream,Encoding.GetEncoding("gb2312")));

}

finally

{

FileUtil.SafeDelete(file);

}

}

voiddoTest(LineReaderreader)

{

StringBuildersb=newStringBuilder();

foreach(stringlineinreader)

sb.Append(line+Environment.NewLine);

Assert.AreEqual(TestLines+Environment.NewLine,sb.ToString());

}

[Test]

publicvoidIgnoreBlankLine()

{

foreach(stringlineinnewLineReader(newStringReader(TestLines),true))

Assert.IsTrue(line.Length!=0);

}

}

}

【asp. net下使用foreach简化文本文件的访问。】相关文章:

asp.net下linkbutton的前后台使用方法

Asp.net中处理一个站点不同Web应用共享Session的问题

HTTP协议下用Web Service上传大文件的解决方案

asp.net下用DataSet生成XML的问题

asp.net中C++单例实现问题分析

dz asp.net论坛中函数--根据Url获得源文件内容

asp.net后台如何动态添加JS文件和css文件的引用?

asp.net字符串分割函数使用方法分享

asp.net下url传递中文的解决方案

asp.net 设置GridView的选中行

精品推荐
分类导航