System.Runtime.InteropServices.COMException发生在mscorlib.ni.dll中但未在用户代码中处理

时间:2014-08-06 05:38:26

标签: c# windows-phone-8.1

我正在开发8.1中的Windows应用程序,我收到以下错误。 我的应用程序包括一个程序,我将把文件从本地存储移动到SD卡。

我的代码如下

namespace MoveFile
{

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();

        this.NavigationCacheMode = NavigationCacheMode.Required;
    }


    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
    }

    private async void btnCreateFolder_Click(object sender, RoutedEventArgs e)
    {

      await ReadFile();

      //Error is showing here

      **await WriteToFile();
    }
    public async Task WriteToFile()
    {
        // Get the text data from the textbox.


      byte[] fileBytes =    System.Text.Encoding.UTF8.GetBytes(this.txtSafakCount.Text.ToCharArray());

           //I got the error in this line.....showing interopservice exception

** StorageFolder knownFolder = await KnownFolders.RemovableDevices.CreateFolderAsync("bdfbdfb", CreationCollisionOption.ReplaceExisting);

        StorageFolder sdCard = (await knownFolder.GetFoldersAsync()).FirstOrDefault();

        // Create a new file named DataFile.txt.
        var file = await sdCard.CreateFileAsync("kaaaaammmmfewfwmHoJa.txt", CreationCollisionOption.ReplaceExisting);

        // Write the data from the textbox.
        using (var s = await file.OpenStreamForWriteAsync())
        {
            s.Write(fileBytes, 0, fileBytes.Length);
        }
    }
    public async Task ReadFile()
    {
        // Get the local folder.
        StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;

        if (local != null)
        {
            // Get the DataFolder folder.
            var dataFolder = await local.GetFolderAsync("DataFolder");

            // Get the file.
           await dataFolder.CreateFileAsync("DataFile.txt", CreationCollisionOption.ReplaceExisting);
            var file = await dataFolder.OpenStreamForReadAsync("DataFile.txt");

            // Read the data.
            using (StreamReader streamReader = new StreamReader(file))
            {
                this.txtSafakCount.Text = streamReader.ReadToEnd();
            }

        }
    }

}
}

我想知道为什么会发生这种异常以及如何解决它。 提前谢谢。

1 个答案:

答案 0 :(得分:2)

你做错了 - 首先你应该得到 SD卡,然后创建文件夹。由于名称KnownFolders.RemovableDevices表示设备(不是单个设备),因此您将其中第一个作为SD卡(请注意,Universal Apps不仅适用于手机)。所以工作代码可能如下所示:

// first get the SD card
StorageFolder sdCard = (await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault();
// then perform some actions - create folders, files ...
StorageFolder myFolder = await sdCard.CreateFolderAsync("bdfbdfb", CreationCollisionOption.ReplaceExisting);

另请注意,如果要使用文件,还需要在 package.appxmanifest 文件中添加功能,并声明 >文件类型关联)。

您还可以在MSDN找到更多帮助。