正在读取Windows RT应用程序中的文件

本文关键字:文件 应用程序 RT 读取 Windows | 更新日期: 2023-09-27 17:50:39

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

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

这是我的代码

   String filename = "apoel.txt";
   System.IO.StreamReader file = new System.IO.StreamReader(filename);

我遵循了MSDN页面上的说明,并完全遵循了这些说明。问题是我不断得到错误

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

我添加了using System.IO;在我的代码的顶部

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

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

正在读取Windows RT应用程序中的文件

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

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

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

以下是我在Windows8中读取/写入文件时使用的代码。它有效,我希望它也能帮助你。

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);            
    }
}
String[] lines = File.ReadAllLines(filePath);

List<string> lines = new List<string>(File.ReadAllLines(filePath));

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

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

并且它应该正确编译。