是否可以将文件保存到确切的特定位置? (Windows 8.1 通用应用程序 C#)

Posted

技术标签:

【中文标题】是否可以将文件保存到确切的特定位置? (Windows 8.1 通用应用程序 C#)【英文标题】:Is it possible to save a file to an exact, specific location? (Windows 8.1 Universal App C#) 【发布时间】:2016-12-21 12:50:42 【问题描述】:

我需要做什么:

在应用运行时将图像文件保存到准确的特定位置(比如“Z:\test\photo.jpeg”)。

其他需要的功能:

1) 如果文件 ''Z:\test\photo.jpeg' 已经存在,则覆盖它。

2) 如果文件夹 'Z:\test\' 不存在,则跳过写入。

我已经尝试过的:

using Windows.Media.Capture.UI;
using Windows.Storage;


CameraCaptureUI camera = new CameraCaptureUI();
StorageFile photo = await camera.CaptureFileAsync(CameraCaptureUIMode.Photo);

if (photo != null)


    var targetFile = await ApplicationData.Current.LocalFolder.CreateFileAsync("photo.jpeg", CreationCollisionOption.ReplaceExisting);
    if (targetFile != null)
    

        await targetFile.DeleteAsync();
        await photo.MoveAndReplaceAsync(targetFile);
    


问题:

有没有办法让变量'targetFile'指向一个特定的位置,例如。 "Z:\test\photo.jpeg"?

我不想使用本地应用程序数据文件夹、图片文件夹或类似的东西。它必须是这个特定的位置。

【问题讨论】:

如果我理解你的问题。你可以看看Environment.SpecialFolder 我看了看,SpecialFolder 不作为 System.Environment 的一部分存在于 8.1 应用中 【参考方案1】:

通用应用程序是沙盒的,只能访问它们的存储文件夹。

您可以使用FileOpenPicker 或FolderPicker 授予对其他文件的访问权限,但您无法控制用户选择让您写入哪个文件。

这意味着您必须让用户选择要存储的确切文件,否则您的应用无法访问该位置。

这里是accessible file locations for UWP apps on MSDN 的概述。

【讨论】:

对于选择器,是否可以将 SuggestedStartLocation 设置为我的特定路径? (“Z:\测试\”)?我在文档中的任何地方都找不到它,它似乎只能接受一系列预设的常见位置(我的图片文件夹等),而不是自定义文件路径 不,仅支持此列表中的项目:msdn.microsoft.com/en-us/library/windows/apps/… 令人沮丧,但我想这是一个可以理解的安全决定。谢谢

以上是关于是否可以将文件保存到确切的特定位置? (Windows 8.1 通用应用程序 C#)的主要内容,如果未能解决你的问题,请参考以下文章

将文件保存到特定位置

将位图保存到位置

将文件保存在设备存储上

在GDB中如何从文件中填充内存

地图标记未指向确切位置

Django ImageField 保存到位置