在 .Net Compact Framework 中将文件内容读取为字符串

50

我正在使用 .net compact framework 2.0 开发移动设备应用程序。我想要将一个文件的内容加载到一个字符串对象中,但是我一直无法完成。在 System.IO.StreamReader 类中没有 ReadToEnd() 方法。是否有另一个类可以提供这个功能?


请发布您目前所拥有的代码。 - Nick Heidke
4个回答

100
StringBuilder sb = new StringBuilder();
using (StreamReader sr = new StreamReader("TestFile.txt")) 
{
    String line;
    // Read and display lines from the file until the end of 
    // the file is reached.
    while ((line = sr.ReadLine()) != null) 
    {
        sb.AppendLine(line);
    }
}
string allines = sb.ToString();

我不知道为什么File类中没有ReadAllText方法。错误:'System.IO.File'不包含'ReadAllText'的定义。有任何想法吗? - lng
你是否在使用 new 关键字?创建 File 的实例和使用静态 File 是两回事。 - Jethro
我正在尝试使用你发布的静态方法。 - lng
忙于阅读 MSDN,发现“注意:此方法是 .NET Framework 2.0 中的新方法。”将用另一个示例更新我的帖子。 - Jethro
运行得很好。一个注意点:我不得不将AppendLine方法更改为Append方法。感谢您的时间。 - lng

41
string text = string.Empty;
using (StreamReader streamReader = new StreamReader(filePath, Encoding.UTF8))
{            
    text = streamReader.ReadToEnd();
}

另一个选项:

string[] lines = File.ReadAllLines("file.txt");

https://gist.github.com/paulodiogo/9134300

简单!


1
一个更简单的方法是将中间行包装在using语句中,这样您就不必在读取器上调用Close()。让框架为您完成所有操作。 - krillgar
1
正确。使用Close()不仅会调用,还会调用Dispose(),释放资源。 - krillgar

7

“ReadAllText”在.NET Compact Framework中没有实现,这也是问题所问的。 - JohnD
确实,我错了。然而,我有点困惑,因为根据 OP 的说法,ReadToEnd 丢失了,但是它在 .net 2.0 紧凑版中是存在的。 - Brad Christie

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接