我正在编写一个实用程序,它将使用 LZMA sdk 压缩一个文件(或一组文件),然后将文件发送到 ftp 服务器。通常压缩的速度比ftp连接的速度要快。我想做的不是压缩文件,而是等待它完成,然后开始上传我想压缩到一个临时文件或流,然后在压缩时上传完成的部分。
现在的问题是怎么做?
我担心的一个问题是我将使用的文件在压缩后可能超过 1GB,而我将在其上运行的系统将有 512MB 到 2GB 的内存,所以我不想让压缩端在内存中狂奔并锁定系统。我一直在考虑的方法是在一个线程中运行压缩,在内存流中排队 5-10Mb,然后将信息发送到另一个线程中的 ftp。这是一个好方法还是有更好的方法来做到这一点?是否有任何陷阱,比如它需要在文件完成时重写文件开头的文件头或其他任何东西?
我打算用 c# 编写这个,但 c、c++ 或 java 中的代码示例也很好。
感谢您的帮助。