【问题标题】:On the Fly GZIP to FTP server即时 GZIP 到 FTP 服务器
【发布时间】:2012-08-09 20:56:26
【问题描述】:

我想获取 SD 卡上的一个文件,并在我 FTP 时对其进行 GZip。我不想创建一个 interrum 文件,将其保存为 gzip,然后按照某人的建议删除这两个文件。必须有一种方法可以动态地在代码中执行此操作。我遇到的问题是其中一些文件是 250M。所以我的基本代码是这样的:

FTPClient con;
FileInputStream in = new FileInputStream(files[i]);
boolean result = con.storeFile(files[i].getName(), in);

如果我可以插入那会很棒,但由于明显的原因失败了:

GZIPInputStream gzip = new GZIPInputStream(in);
con.storeFile(files[i].getName(), gzip);

我得到一个幻数错误..

【问题讨论】:

    标签: android ftp gzip


    【解决方案1】:

    您可以使用zlib。它支持内存中 gzip 压缩。您可以简单地将其编译到您的代码中。

    【讨论】:

    • deflateInit2(), deflate(), deflateEnd() 是一种分段压缩引擎,可让您一次输入少量数据并取出少量数据。有关示例,请参阅zlib.net/zlib_how.htmldeflateInit2() 而不是 deflateInit() 允许您选择 gzip 格式。
    • 所以我必须在 Android 中编译这个 NDK 和 JNI 吗?我必须担心数组内存分配吗?似乎我记得某处允许 NDK 创建数组对内存空间有一些负面影响。
    • NDK 提供到 zlib 的接口。 zlib 不会使用太多堆(小于 1MB),因此对于通常具有 16MB 堆的 Android 设备来说不是问题。
    • 有一次我不得不在电话上使用它,所以在电话上要做的工作太多了。但是很好的建议...稍后我有更多时间或者您实际上为它编写 JNI 时将不得不尝试。
    猜你喜欢
    • 2020-08-06
    • 2013-03-20
    • 2011-11-14
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多