2

我在使用 Windows 8 应用程序并从打开的文件中获取蒸汽时遇到问题。还有其他方法可以在 Windows 8 中读取/写入文件,但为了能够提取标准流,我试图看看是否可以。到目前为止还不好。问题是 System.IO.BufferedStream 不是 Windows 8 应用程序中 System.IO 的一部分。因此下面的代码:

    (MemoryStream)(await (await installedLocation.GetFileAsync("SOMEFILE")).OpenStreamForWriteAsync());

我为精简的代码道歉。上面的代码抛出了提到的异常。问题再次是我无法创建缓冲流。我想知道是否有办法解决这个问题。

任何帮助是极大的赞赏!

4

3 回答 3

1

好吧,是的 - 你正在投射到,MemoryStream不是MemoryStream. System.IO.BufferedStream似乎存在- 它只是不公开;这是一个您不必担心的实现细节。你不能把它转换成一个MemoryStream,因为它不是一个。

目前还不清楚你为什么要投到MemoryStream,但你应该可以Stream改用。如果您需要MemoryStream,您必须自己创建一个并将数据复制到其中。

于 2012-12-23T20:20:13.020 回答
0

根据文档,您应该可以只使用返回的Stream.

http://msdn.microsoft.com/en-us/library/hh582147.aspx

有理由将它转换为 aMemoryStream吗?

于 2012-12-23T20:19:44.333 回答
0

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

    // 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)
        {              
        }
    }
    // 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)
        {              
        }
    }
于 2012-12-23T20:28:25.550 回答