如何在c/c ++中压缩文件?因为我想开发像WinZip/WinRAR这样的应用程序.一个更简单的.
在服务器和客户端之间传输尽可能少的数据至关重要.因此我想到了使用mysql的Compress()函数.为了获得最大压缩,我还想在一个大字符串(或MySql允许的几个最大长度)中连接我的所有结果,以允许压缩类似的结果,然后压缩这些/那个字符串.
第一个问题(连接mysql结果):
SELECT name,age
FROM users
Run Code Online (Sandbox Code Playgroud)
返回10个结果.我想在表格上的一个条纹中连接所有这些结果:名称,年龄,姓名,年龄,姓名,年龄......等等.这可能吗?
第二个问题(压缩上面的结果)
当我按照上面的方法构建连接字符串时,我想压缩它.如果我做:
SELECT COMPRESS('myname');
Run Code Online (Sandbox Code Playgroud)
然后它只是给我输出字符' - ' - 有时它甚至返回不可打印的字符.如何让COMPRESS()返回一个压缩的可打印字符串,我可以用ex ASCII编码进行转换?
长Ascii字符串文本可能会或可能不会被压缩并压缩成ascii"校验和"的哈希类型,使用复杂的数学公式/算法.就像可以压缩的空气一样.
为了将兆字节的ascii文本压缩成128个左右的字节,通过混洗,然后将单个"字节"的新"模式"从第一个转到最后一个.当我们解压缩它时,首先提取最后一个字符,然后我们继续使用公式和从最后一个到第一个的顺序键进行解压缩.必须准确知道顺序键以及最后和第一个字节,包括完全更新的最终编译字符串以及压缩的总字节数.
这是我正在思考的terra压缩.这可能吗?你能解释一下这些例子 我正在研究这个理论,这是我自己的想法.
我正在使用YUI maven插件,我想知道如何压缩特定目录并排除所有其他目录.
在maven中,我声明src/main/webapp/javascript来获取此目录中的所有.js文件,但是在输出目录中显示此目录中的所有应用程序js.
谢谢.
我正在寻找ac#库,它是开源的,但已被许可允许在封闭源项目中进行开发(因此类似于MIT/BSD样式),允许我使用压缩文件.我真的不是那么挑剔使用什么压缩,只是它是常见的(.zip,.rar,.tar,.tar.gz等...).
我需要这个功能的原因是我正在构建一个Web应用程序平台,现在是能够为我认为是压缩文件的平台构建和分发模块(或插件)的最佳和最简单的方法.压缩文件将保存.dll文件,其中包括源代码和剃刀视图以及任意数量的支持文件(图像,dotlesscss,javascript等等).我想要做的是通过Web应用程序平台本身,允许用户只能上传一个压缩文件,让Web应用程序复制文件,提取其中的所有文件,并复制提取的文件进入正确的位置.
因此,例如,我有一个数组,包含0到52之间的52个混洗整数 - 没有重复的值.
如何根据算法对此数组进行编码,使其可以表示为较少的数字,然后解码并再次重现原始值?
我以为我可以创建一个大的二进制字符串,并将0或1的组分组作为字符组合,然后对其进行扩展.这会是要走的路吗?谢谢
搜索后,我没能找到一个很容易理解的解释,为什么额外的4个使用时对加BlockCopy方法(如图所示这里,这里,这里,这里)
该文件说:
顾名思义,BlockCopy方法整体复制一个字节块,而不是一次复制一个字节.因此,如果src和dst引用相同的数组,并且srcOffset + count -1的范围与dstOffset + count - 1的范围重叠,则重叠字节的值在复制到目标之前不会被覆盖.在以下示例中,名为arr的数组中的字节0-16的值将复制到字节12-28.尽管范围重叠,但源字节的值已成功复制.
但是我并没有真正明白这一点,并希望有人能够以不同的方式解释它(或发布一个解释这个的资源的链接),以及为什么需要添加这些额外的4个字节.
为清楚起见,这里是我所指的代码:
作为压缩方法的一部分:
byte[] gzBuffer = new byte[compressed.Length + 4];
System.Buffer.BlockCopy(compressed, 0, gzBuffer, 4, compressed.Length);
System.Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gzBuffer, 0, 4);
Run Code Online (Sandbox Code Playgroud)
作为解压缩方法的一部分:
ms.Write(gzBuffer, 4, gzBuffer.Length - 4);
Run Code Online (Sandbox Code Playgroud) 可能重复:
Deflate命令行工具
是的,我知道我可以在shell上使用PHP本身,但我需要在PHP可用之前部署的脚本中使用此功能.
我已经尝试过gzip,unzip但是我的参数不正确或者它们只是不使用相同的压缩.
我想在bash脚本中使用它.进入更高级别的脚本语言不是一种选择.
我编写了以下PHP脚本用于测试目的:
#!/usr/bin/php
<?
$contents = file_get_contents( $argv[1] );
$data = gzuncompress( $contents );
echo substr( $data, 0, 20 ) . "\n";
?>
Run Code Online (Sandbox Code Playgroud)
这会输出我所期望的(解码数据的开头).
如果我将同一个文件传递给gunzip:
$ gunzip -c data
gzip: data: not in gzip format
Run Code Online (Sandbox Code Playgroud)
如果我尝试unzip:
$ unzip data
Archive: data
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory …Run Code Online (Sandbox Code Playgroud)