使用Xamarin Android和Portable Class Libraries从zip文件中提取文件

时间:2014-01-19 14:12:04

标签: xamarin.android xamarin mvvmcross portable-class-library

我正在尝试在我的Xamarin Android mvvmCross项目中实现zip功能。

我想知道是否存在类似于Microsoft.Bcl.Compression的归档库,用于从zip文件中提取文件,并且Mono Android支持。我曾尝试使用zlib portable,但我注意到它只提供压缩和不压缩的流。

提前谢谢你。

3 个答案:

答案 0 :(得分:4)

通常文件处理在PCL中不起作用,因为它们对底层文件系统一无所知。因此,您需要为要支持的每个平台提供某种文件抽象。在MvvmCross中,您可以通过为此提供自己的插件来实现此目的。 PCL包含所有逻辑,而平台相关项目执行将流发送到PCL的所有文件处理。

您可以在此处详细了解插件:https://github.com/MvvmCross/MvvmCross/wiki/MvvmCross-plugins

答案 1 :(得分:3)

按照Cheesebaron的建议,通过界面将功能注入PCL。对于Android,您可以使用可通过Xamarin库获得的Java.Util.Zip.ZipFile。

答案 2 :(得分:2)

PCL不提供使用路径访问文件系统的权限。但是,Microsoft.Bcl.Compression NUGet包添加了基于流的压缩支持,包括ZIP存档。虽然这个NuGet软件包只提供了Windows Phone的实现,但它确实能够以便携方式使用特定于平台的压缩API,其中应该包括Mono平台。

显然现在有一个bug可以防止这种情况发生。有关详细信息,请参阅Stack Overflow上的question