关于Zlib压缩算法的byte数组 我现在要实现将一个文件压缩成二进制流 并存入数据库的image字段 这样就会用到byte数组 但byte[]要用就要先定义其大小 进行初始化 我不知道压缩后大小是多少 定义太大又害怕实现不了压缩的目的 太小也不行 求高人能帮忙解决一下这个问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 参考FortuneBase/FortuneDomain/CompressData.cs参考地址www.cnblogs.com/mail-ricklee 我找了好久 都没找到 你说的CompressData.cs在哪 能给我发一份吗? 邮箱:[email protected]万分感谢! FortuneWeb/FortuneDomain/Common/Compress/CompressData.cs 挺奇怪操作流怎么会涉及到数组大小的问题,比如下面这个压缩批量文件的例子try { using (ZipOutputStream s = new ZipOutputStream(File.Create(Path))) { s.SetLevel(9); // 0 - store only to 9 - means best compression byte[] buffer = new byte[4096]; string fp = fWorkPath + "\\"; foreach (string file in filenames) { if (file.IndexOf(fp) != 0 || file.Length < fp.Length) continue; string filename = file.Substring(fp.Length, file.Length - fp.Length); ZipEntry entry = new ZipEntry(filename); entry.DateTime = DateTime.Now; s.PutNextEntry(entry); using (FileStream fs = File.OpenRead(file)) { int sourceBytes; do { sourceBytes = fs.Read(buffer, 0, buffer.Length); s.Write(buffer, 0, sourceBytes); } while (sourceBytes > 0); } } s.Finish(); s.Close(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } 一般在无法知道待压缩文件大小的时候,采用我们自己设定的一个byte数据,一段一段的传输。 这里有涉及到传输的概念吗?存入数据库而已,直接流对象调用ToArray()方法即可获得数组,根本不需要自己设定Byte数组的。 在winform中如何实现点一个按钮执行这铵钮的事件的同时又执行另一个按钮的事件 textbox焦点丢失后,如何提交里面的数据 高粉请教 webBrowser 虚拟网页来路 点视频的超级连接,弹出RealPlay,自动连接播放,该如何实现。 c#如何发送邮件 问三个有关Add-In技术的难题,恳请高手帮忙 textbox控件怎么给它的多行文本付值 C#怎样能把窗口最小化只在系统栏显示。 怎样子把文件倒入到数据库中啊。大家帮帮忙。 EF数据库优先模式开发时,怎样自定义一个数据库中没有对应字段的属性? ado.net的数据更新问题 如何将C#绘制的图片保存为透明背景?
万分感谢!
FortuneWeb/FortuneDomain/Common/Compress/CompressData.cs
{
using (ZipOutputStream s = new ZipOutputStream(File.Create(Path)))
{
s.SetLevel(9); // 0 - store only to 9 - means best compression byte[] buffer = new byte[4096]; string fp = fWorkPath + "\\";
foreach (string file in filenames)
{
if (file.IndexOf(fp) != 0 || file.Length < fp.Length) continue;
string filename = file.Substring(fp.Length, file.Length - fp.Length);
ZipEntry entry = new ZipEntry(filename);
entry.DateTime = DateTime.Now;
s.PutNextEntry(entry);
using (FileStream fs = File.OpenRead(file))
{
int sourceBytes;
do
{
sourceBytes = fs.Read(buffer, 0, buffer.Length);
s.Write(buffer, 0, sourceBytes);
} while (sourceBytes > 0);
}
}
s.Finish();
s.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
一般在无法知道待压缩文件大小的时候,采用我们自己设定的一个byte数据,一段一段的传输。