0

可能重复:
如何逐行读取文本文件 Windows RT?

我正在尝试在 C# 中逐行读取文件。

这是我的代码

   String filename = "apoel.txt";

   System.IO.StreamReader file = new System.IO.StreamReader(filename);

我遵循了MSDN 页面上的说明并完全按照它们进行操作。问题是我不断收到错误

System.IO.StreamReader.StreamReader (System.IO.Stream)' 的最佳重载方法匹配有一些无效参数
参数 1:无法从 'string' 转换为 'System.IO.Stream'

我补充说using System.IO;在我的代码顶部

我究竟做错了什么?如果有任何帮助,这是一个 Windows Metro 应用程序

也有人可以向我解释为什么我发布的来自 MSDN 的文章是错误的并且不起作用?请不要给我其他选择。请告诉我为什么我的代码在 MSDN 中这样解释时不起作用

4

4 回答 4

13

您正在阅读的文档没有考虑到许多成员StreamReader在 Windows 应用商店应用程序中不可用的事实。

查看整体StreamReader文档。您只能使用旁边有绿色袋子的成员。

Windows 应用商店应用程序中的文件访问与完整的桌面 .NET 略有不同。我建议您阅读此MSDN 指南。一旦你有了 a Stream,你就可以构建一个- 或者你可以使用诸如StreamReader的成员,这取决于你想要做什么。Windows.Storage.FileIOReadLinesAsync

于 2013-01-04T20:59:38.797 回答
4

这是我用于在 Windows 8 中读取/写入文件的代码。它有效,我希望它也能帮助你。

private StorageFolder localFolder;
// Read from a file line by line
public async Task ReadFile()
{
    try
    {
        // get the file
        StorageFile myStorageFile = await localFolder.GetFileAsync("MyDocument.txt");
        var readThis = await FileIO.ReadLinesAsync(myStorageFile);
        foreach (var line in readThis)
        {
            String myStringLine = line;
        }
        Debug.WriteLine("File read successfully.");
    }
    catch(FileNotFoundException ex)
    {   
        Debug.WriteLine(ex);           
    }
}
// Write to a file line by line
public async void SaveFile()
{
    try
    {
        // set storage file
        StorageFile myStorageFile = await localFolder.CreateFileAsync("MyDocument.txt", CreationCollisionOption.ReplaceExisting);
        List<String> myDataLineList = new List<string>();
        await FileIO.WriteLinesAsync(myStorageFile, myDataLineList);
        Debug.WriteLine("File saved successfully.");
    }
    catch(FileNotFoundException ex)
    {  
        Debug.WriteLine(ex);            
    }
}
于 2013-01-05T10:29:37.803 回答
2

在您在上面发布的示例中,文件名未初始化为任何内容。对于更高版本的编译器,它会抱怨未分配使用文件名。在任何情况下将文件名初始化为

string filename = @"c:\somefile.txt";

它应该可以正确编译。

于 2013-01-04T21:11:16.303 回答
2
String[] lines = File.ReadAllLines(filePath);

或者

List<string> lines = new List<string>(File.ReadAllLines(filePath));
于 2013-01-04T21:22:43.587 回答