0

我想动态创建文件夹,需要将文件复制到 uwp 应用程序的本地文件夹。文件夹名称应该是文件名。例如,如果我上传一个名为 Test01.png 的文件。然后应该创建一个名为“Test01”的文件夹,并且需要将 Test01.png 复制到 Test01 文件夹。如果文件已存在,则应显示“文件已存在,需要替换”之类的警报。

        FileOpenPicker openPicker = new FileOpenPicker();
        openPicker.ViewMode = PickerViewMode.Thumbnail;
        openPicker.SuggestedStartLocation = PickerLocationId.Desktop;

        foreach (string extension in FileExtensions.Video)
        {
            openPicker.FileTypeFilter.Add(extension);
        }

        file = await openPicker.PickSingleFileAsync();
        if (file != null)
        {
            StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
            await ApplicationData.Current.LocalFolder.CreateFolderAsync("Data");//need to change the folder name with filename
            string desiredName = file.Name;
            //should copy it to subfolder and raise alert if already exist
            StorageFile newFile = await localFolder.CreateFileAsync(desiredName, CreationCollisionOption.FailIfExists);

        }
4

1 回答 1

0

这是你可以做的。我已经在记事本中写了这个并且没有机会测试这个。

FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.SuggestedStartLocation = PickerLocationId.Desktop;

foreach (string extension in FileExtensions.Video)
{
    openPicker.FileTypeFilter.Add(extension);
}

file = await openPicker.PickSingleFileAsync();
if (file != null)
{
    StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

    string folderName = System.IO.Path.GetFileNameWithoutExtension(file.Name);  //folder name with filename

    ////await ApplicationData.Current.LocalFolder.CreateFolderAsync("Data");//need to change the folder name with filename

    StorageFolder testFolder = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFolderAsync("test", CreationCollisionOption.OpenIfExists);

    ////StorageFolder newFolder = await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFolderAsync(folderName, CreationCollisionOption.OpenIfExists);

    StorageFolder newFolder = await testFolder.CreateFolderAsync(folderName, CreationCollisionOption.OpenIfExists);

    string desiredName = file.Name;
    //should copy it to subfolder and raise alert if already exist

    ////StorageFile newFile = await localFolder.CreateFileAsync(desiredName, CreationCollisionOption.FailIfExists);

    try
    {
        await file.CopyAsync(newFolder, desiredName, NameCollisionOption.FailIfExists);
    }
    catch(Exception exp)
    {
        //show here messagebox that is exists
        Windows.UI.Xaml.Controls.ContentDialog replacePromptDialog = new Windows.UI.Xaml.Controls.ContentDialog()
        {
            Title = "File exists in the new location",
            Content = "Do you want to replace the old file with the new file?",
            CloseButtonText = "Keep the old one",
            PrimaryButtonText = "Replace with new one"
        };
        Windows.UI.Xaml.Controls.ContentDialogResult result = await replacePromptDialog.ShowAsync();
        if (result == Windows.UI.Xaml.Controls.ContentDialogResult.Primary)
        {
            await file.CopyAsync(newFolder, desiredName, NameCollisionOption.ReplaceExisting);
        }
    }

}
于 2017-12-06T06:29:41.557 回答