- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想添加 SharpZipLib.Portable我的 Xamarin.Forms
PCL 项目的库。我的目标是 Android 和 iOS。文档提到您必须实现 VirtualFileSystem
才能使用该库,但我不知道该怎么做,而且我一直找不到关于该主题的很多信息。
有没有人使用过这个库,可以指导我完成使用它所需的步骤?
最佳答案
我在尝试实现 SharpZipLib.Portable 时最终来到这里.我开始在没有 IVirtualFileSystem
的情况下使用它,因为我已经有一个名为 ( PCLStorage) 的库,它知道如何在文件系统中读写(在 iOS
和 上测试过>Android
).
注意:这些实现都在针对 iOS
、Android
的 PCL 中。不需要针对 Android 或 iOS 的特定代码。
这是一个如何使用 PCLStorage
和 SharpZipLib.Portable
提取 Zip 文件的简单示例:
public async void DonwLoadAndStoreZipFile()
{
var bytes = await DownloadImageAsync("https://github.com/fluidicon.png");
// IFolder interface comes from PCLStorage
IFolder rootFolder = FileSystem.Current.LocalStorage;
IFolder folder = await rootFolder.CreateFolderAsync("zipFolder", CreationCollisionOption.OpenIfExists);
IFile file = await folder.CreateFileAsync("test.zip" , CreationCollisionOption.OpenIfExists);
using (Stream stream = await file.OpenAsync(FileAccess.ReadAndWrite))
{
await stream.WriteAsync(bytes, 0, bytes.Length);
using (var zf = new ZipFile(stream))
{
foreach (ZipEntry zipEntry in zf)
{
// Gete Entry Stream.
Stream zipEntryStream = zf.GetInputStream(zipEntry);
// Create the file in filesystem and copy entry stream to it.
IFile zipEntryFile = await rootFolder.CreateFileAsync(zipEntry.Name , CreationCollisionOption.FailIfExists);
using(Stream outPutFileStream = await zipEntryFile.OpenAsync(FileAccess.ReadAndWrite))
{
await zipEntryStream.CopyToAsync(outPutFileStream);
}
}
}
}
}
如果您想获得一些有关如何使用 SharpZipLib.Portable
的示例,您可以在此处阅读(原创 SharpZipLib): Code reference和 Zip samples .
备选方案:
在完成上述操作后,我得到了一个更简单的解决方案,因为我只需要支持 ZIP 文件。我使用了 System.IO.Compression
和 PCLStorage
中的 ZipArchive Class
,所以在这个解决方案中我没有使用 SharpZipLib.Portable
。
这是版本:
public async void DonwLoadAndStoreZipFile()
{
var bytes = await DownloadImageAsync(https://github.com/fluidicon.png);
// IFolder interface comes from PCLStorage
IFolder rootFolder = FileSystem.Current.LocalStorage;
IFolder folder = await rootFolder.CreateFolderAsync("zipFolder", CreationCollisionOption.OpenIfExists);
IFile file = await folder.CreateFileAsync("test.zip" , CreationCollisionOption.OpenIfExists);
using (Stream stream = await file.OpenAsync(FileAccess.ReadAndWrite))
{
await stream.WriteAsync(bytes, 0, bytes.Length);
using(ZipArchive archive = new ZipArchive(stream))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
IFile zipEntryFile = await rootFolder.CreateFileAsync(entry.Name, CreationCollisionOption.FailIfExists);
using (Stream outPutStream = await zipEntryFile.OpenAsync(FileAccess.ReadAndWrite))
{
await entry.Open().CopyToAsync(outPutStream);
}
}
}
}
}
关于c# - 如何实现 SharpZipLib.Portable 所需的 VirtualFileSystem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31248492/
我最近下载了 Eclipse Portable 以随时随地进行 Java 编程。我还下载了 Java Portable。 如何将 Java Portable 与 Eclipse Portable 集成
我想包括一个可移植的类库,如下图所示: 但是,我收到以下错误: no exports were found that match the constraint contractname microso
我无法理解 Visual Studio 2015 中所有这些不同类库模板之间的区别。谁能解释或提供文档?我试过寻找但没有成功。 最佳答案 Portable 无需安装即可运行和引用 类库是 Window
我有 .net 核心测试项目。当我在 visual studio 中构建它或使用 TestManager 时,它构建时没有问题。但是,当我在包管理器控制台上执行以下命令时,出现错误: dotnet 测
很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .
如何编写可移植的初始化脚本 Upstart (Ubuntu) 系统 可选的init.d 其他平台(Windows、Android、OS-X)在我的上下文中并不重要。 最佳答案 两者都是systemd和
如果有人在优化代码、实现的清晰度、效率和可移植性方面证明他们的设计权衡是合理的,该如何选择? 这个问题的一个相关示例可能是大文件处理,其中“大文件”是“相当几 GB”的问题,可以使用随机访问方法进行简
aarch64 上的用户程序是否可以检测 crc32 指令是否可用?我找到了 references to kernel support对于这种检测,意味着包含有关哪些指令将在用户模式下工作的信息的寄存
当我在 hexeditor 中查看 pe 文件时,值被反向存储在其中,但为什么? 例如: pe文件头结构中第2条记录是指Number Of Section 那是值(value)是 0300 但实际值为
我知道这个问题可能听起来很奇怪,因为 GLib 是一个可移植性库,但它的可移植性如何?举一个例子:GLib(包括GObject)是在微 Controller 上运行还是依赖于某种操作系统? 我可以在何
我想在OllyDbg中分析一个文件,但是该文件中的“入口点地址”是0x0000。因此它将运行 MZ 签名作为 ASM 代码的开始部分。 大多数调试器也无法直接调试它。 如何找到修改 header 的原
我想在OllyDbg中分析一个文件,但是该文件中的“入口点地址”是0x0000。因此它将运行 MZ 签名作为 ASM 代码的开始部分。 大多数调试器也无法直接调试它。 如何找到修改 header 的原
问题 如果我在 windows 上使用 clozure cl 在普通 lisp 中制作 2d 游戏(使用:lispbuilder-sdl、quicklisp、cffi),我以后能否轻松地将其移植到其他
谁能解释一下IMAGE_THUNK_DATA的结构? 我只知道它有4个元素,但我想要这些元素的解释。 最佳答案 IMAGE_THUNK_DATA 的定义如下: typedef struct _IMAG
我刚刚使用 objdump -x ... 来检查 PE 文件的部分。 大约有 90,000 行 reloc 条目: reloc 92 offset bc0 [524bc0] HIGHLOW re
我只是想使用它,这是个好东西,但我不确定它是否受到所有主要浏览器的支持。 最佳答案 I am not sure if it's supported by all major browsers. 是的。
我正在阅读 java persistence specification version 2.1 在第 25 页中有最后一段: 实体子类可以覆盖属性访问器方法。但是,可移植应用程序不得覆盖适用于持久字
我在一个解决方案中有两个项目。核心和机器人。在 Droid 项目中,我有一个方法需要在异步方法 IN CORE 完成其任务时调用。我在 Core 中的代码是: public async
我最近不得不从一位老同事那里接手一个项目;该项目是用 JAVA 编写的,使用 Java Web-Start 并使用轻型 Java 库 (org.apache.catalina.startup.Tomc
我有一个简单的 HTML 页面,它包含指向图片和其他 HTML 页面的链接。我把网页放在内存USB上。当我将内存 USB 插入另一台 PC 时,我需要更改其在文件中的路径。我怎么能自动做到这一点? 谢
我是一名优秀的程序员,十分优秀!