Windows IoT Raspberry Pi 3 c# 检查文件夹存在如果不存在则创建

Windows IoT Raspberry Pi 3 c# Check Folder Exist Create if not

我正在尝试检查文件夹是否存在.. 如果不存在,我将需要创建一个文件夹。如果文件夹不存在并创建一个文件夹,我的代码似乎可以工作......但随后在创建文件夹之后......它会遇到异常处理程序...... 我不确定哪里出了问题..请指教。 谢谢

        StorageFolder externalDevices = KnownFolders.RemovableDevices;
        IReadOnlyList<StorageFolder> externalDrives = await externalDevices.GetFoldersAsync();
        StorageFolder usbStorage = externalDrives[0];
        String folderName = "Recordings";
        String fileName = DateTime.Now.ToString();

        if (!Directory.Exists(folderName))
        {
            await usbStorage.CreateFolderAsync(folderName);
        }

        await usbStorage.GetFolderAsync(folderName);
        StorageFolder recordFolder = await usbStorage.GetFolderAsync(folderName);
        StorageFile recordFile = await recordFolder.CreateFileAsync("Recording -" + DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss") + ".mp3", Windows.Storage.CreationCollisionOption.GenerateUniqueName);

        RecordStatus.Text = "File setup OK ... ";

首先,用Directory.Exists来判断折叠是否存在在这里是不合适的。 Directory.Exists 方法的路径参数允许指定相对或绝对路径信息。相对路径信息被解释为相对于当前工作目录。但是在您的代码中,文件夹名称与您的工作目录无关(实际上,您的工作目录是 Windows.ApplicationModel.Package.Current.InstalledLocation)。

其次,在UWP中,CreateFolderAsync的方法有一个带有CreationCollisionOption参数的重载方法。

请在您的代码中更改此部分

if (!Directory.Exists(folderName))
{
     await usbStorage.CreateFolderAsync(folderName);
}

  await usbStorage.CreateFolderAsync(folderName, CreationCollisionOption.OpenIfExists);

会好的