首页 文章

在UWP的LocalFolder中创建一个文件夹并将文件复制到该文件夹

提问于
浏览
0

我想动态创建文件夹,需要将文件复制到uwp app的本地文件夹 . 文件夹名称应为文件名 . 例如,如果我上传名为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);

        }

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);
            }
        }
    
    }
    

相关问题