在UWP中创建/编写/压缩/解压缩文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在UWP中创建/编写/压缩/解压缩文件相关的知识,希望对你有一定的参考价值。
编辑:关于路径问题。我会试着稍后到达那里。现在我只需要zip文件的帮助。找不到办法做到这一点。
我目前正在经历一些基础知识,我不知道我需要找到什么才能达到我想要的目标。那么,我的目标是什么?:
- 我想在这里创建一个
name.json
文件C:UsersUsernameDesktop
- 然后我想将
name.json
压缩为zip文件。 - 我还在桌面上创建了另一个文件
Testfile.zip
。我想解压缩该文件。
到目前为止,我创建了一个name.json
文件。但我找不到如何在桌面上创建一个解决方案。
到目前为止,我找不到压缩name.json的解决方案。
public MainPage()
{
this.InitializeComponent();
createJson();
UnzipFile();
}
public async void createJson()
{
string text = "This text";
string json = JsonConvert.SerializeObject(text);
var file = await ApplicationData.Current.LocalFolder.CreateFileAsync("name.json");
await FileIO.WriteTextAsync(file, json);
}
public async void UnzipFile()
{
var localFolder = ApplicationData.Current.LocalFolder;
var archive = await localFolder.GetFileAsync("Testfile.zip");
ZipFile.ExtractToDirectory(archive.Path, localFolder.Path);
}
使用.zip
和相关类可以使用System.IO.Compression.ZipArchive
文件。您已经在使用ZipFile.ExtractToDirectory
,这是正确的方法。但是,您面临的问题与权限相关。
UWP应用程序是沙盒,这意味着默认情况下不允许它们触摸任何文件系统位置。这是为了确保更好的安全性和更轻松的应用程序卸载。但这意味着您无法在用户的桌面上轻松创建文件,因为您的应用程序无权访问该文件。您的应用程序可以自由访问的唯一文件夹是ApplicationData.Current
可访问的文件夹,然后是应用程序清单中声明访问权限的文件夹。您还可以在此处声明广泛的文件系统访问权限,以访问PC上的所有位置。
为了进一步复杂化,UWP中有两种类型的I / O API。启用了StorageFile
的现代async
API,但速度稍慢,而C#中的经典文件I / O API包括ZipFile
和ZipArchive
。经典API的主要缺点是它们始终只能访问应用程序文件夹,即使您声明了广泛的文件系统访问权限,也永远无法访问任何其他系统路径。
但是,即使没有声明广泛的文件系统访问功能,您也可以使用FolderPicker
, FileOpenPicker
和FileSavePicker
手动访问用户选择的文件夹/文件。使用这些,您可以让用户选择保存文件或打开文件的目的地。
最后 - 为了避免无法使用经典文件I / O API的限制,您可以先将.zip
文件解压缩到ApplicationData.Current.LocalFolder
中的临时文件夹中,然后使用StorageFile.MoveAndReplaceAsync(IStorageFile)
或StorageFile.MoveAsync(IStorageFolder)
方法将文件移动到用户所在的位置选择使用FileSavePicker
。
有关更多信息,您可以查看this blog post以及在UWP中使用.zip
的教程。
以上是关于在UWP中创建/编写/压缩/解压缩文件的主要内容,如果未能解决你的问题,请参考以下文章