Unity3d 字符串压缩 ICSharpCode.SharpZipLib

转载 2013年12月02日 16:26:49

对于unity3d的web player中使用的sysytem.dll是阉割版,不是完整的微软的system.dll,所以在Unity3d中要使用压缩还是有点麻烦的,我这里使用的第三方的dll,经典的ICSharpCode.SharpZipLib。

         我是在Web Player中使用,直接引入dll文件,然后在脚本中调用,最开始我用这个还是整得来很麻烦的!我建的一个控制台测试,始终只能压缩文本文件,不能压缩字符串。自己又能力有限,对于IO和Stram的操作不是很熟悉,转换多次始终不能使用这个压缩文件的方法压缩字符串,代码如下:
       

复制代码
       /// <summary>
       /// 使用GZIP压缩文件的方法
       /// </summary>
        /// <param name="sourcefilename">源文件路径</param>
        /// <param name="zipfilename">压缩文件路径</param>
        /// <returns>返回bool操作结果,成功true,失败 flase</returns>
        public static bool GZipFile(string sourcefilename, string zipfilename)
        {
            bool blResult;//表示压缩是否成功的返回结果
            //为源文件创建读取文件的流实例
            FileStream srcFile = File.OpenRead(sourcefilename);
            //为压缩文件创建写入文件的流实例,
            GZipOutputStream zipFile = new GZipOutputStream(File.Open(zipfilename, FileMode.Create));
            try
            {
                byte[] FileData = new byte[srcFile.Length];//创建缓冲数据
                srcFile.Read(FileData, 0, (int)srcFile.Length);//读取源文件
                zipFile.Write(FileData, 0, FileData.Length);//写入压缩文件
                blResult = true;
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.Message);
                blResult = false;
            }
            srcFile.Close();//关闭源文件
            zipFile.Close();//关闭压缩文件
            return blResult;
        }
        /// <summary>
        /// 使用GZIP解压文件的方法
        /// </summary>
        /// <param name="zipfilename">源文件路径</param>
        /// <param name="unzipfilename">解压缩文件路径</param>
        /// <returns>返回bool操作结果,成功true,失败 flase</returns>
        public static bool UnGzipFile(string zipfilename, string unzipfilename)
        {
            bool blResult;//表示解压是否成功的返回结果
            //创建压缩文件的输入流实例
            GZipInputStream zipFile = new GZipInputStream(File.OpenRead(zipfilename));
            //创建目标文件的流
            FileStream destFile = File.Open(unzipfilename, FileMode.Create);
            try
            {
                int buffersize = 2048;//缓冲区的尺寸,一般是2048的倍数
                byte[] FileData = new byte[buffersize];//创建缓冲数据
                while (buffersize > 0)//一直读取到文件末尾
                {
                    buffersize = zipFile.Read(FileData, 0, buffersize);//读取压缩文件数据
                    destFile.Write(FileData, 0, buffersize);//写入目标文件
                }
                blResult = true;
            }
            catch (Exception ee)
            {
                Console.WriteLine(ee.Message);
                blResult = false;
            }
            destFile.Close();//关闭目标文件
            zipFile.Close();//关闭压缩文件
            return blResult;
        }
复制代码

 

       后面也在网上找了几个方法还是不行,都几近放弃了,准备改教了,换实现方法了,偶然发现一个方法,可以很好的实现,并且压缩的效率也不低,因为我要压缩的是26万个float的二维数据,格式简单;我看压缩率也不错,就用这个了,果断的方便的实现我们的需求。

 

     因为Unity3d的阉割,我找了多久哦!特分享出来,如果有遇到和我相同需求的,可以参考参考!后面放出我做的控制台的测试程序。

   有需要查看代码的朋友:code


http://write.blog.csdn.net/postedit

相关文章推荐

推荐两个压缩库:SharpZipLib和Zlib

SharpZipLib网址:http://www.icsharpcode.net/OpenSource/SharpZipLib/简介  SharpZipLib是一个完全由c#编写的Zip, GZip,...
  • NewMap
  • NewMap
  • 2007-08-28 23:26
  • 3687

在Unity3d中使用GZip来压缩网络传输数据

项目中网络通讯需要下载配置数据,有的数据块非常大,比较耗时,所以想到先压缩数据来传输! 因为Unity中的.net支持是有限制的,所以C#自带的GZip的压缩方法不能够使用。    ...

Unity LZMA GZIP 压缩、解压文件 和 打包文件夹 (支持进度回调)

我们知道在Unity5.x开始推出新的AssetBundle打包策略,给出的新的打包以及解包的Api。在处理资源依赖关系的时候较旧版本的显得方便了许多。 然而,在使用的过程中我们发现,新的解包Api(...

在Unity3d中使用GZip来压缩传输数据

因为Unity中的.net支持是有限制的,所以C#自带的GZip的压缩方法不能够使用。            可以到下面网址去下载一个专门的dll来处理数据的GZip压缩: http...

在Unity3d中使用GZip来压缩传输数据

因为Unity中的.net支持是有限制的,所以C#自带的GZip的压缩方法不能够使用。            可以到下面网址去下载一个专门的dll来处理数据的GZip压缩: http...

unity打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件)

打包需要用到第三方的dll==》ICSharpCode.SharpZipLib.dll,可以到官网去下载http://icsharpcode.github.io/SharpZipLib/

解决zlib.h:no such file or directory

今天在linux装Qt库时,出现了 error: zlib.h:no such file or directory 去看了下出错的文件,里面这么一句#include 没这头文件?那就给它呗。 ...

Unity 3d脚本加密方案

原文:http://www.cppcourse.com/u3d-encryption.html 1.1   加密方案 Unity 3D项目游戏逻辑采用C#脚本,我们知道C#...

Zlib解压缩示例

先上代码,压缩包的文件结构解析: zip=unzOpen(resItem->filename); if(0==zip) return false; ...

Unity3D 录音, 压缩, 保存, 读取, 实时检测音量

unity 录音功能主要通过,Microphone这个类来完成。使用这个类自然可以跨平台,不用调用平台本地代码处理。       private static AudioClip clip; ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)