首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java - My Huffman解压缩拒绝解压缩非文本文件(返回空文件)

Java - My Huffman解压缩拒绝解压缩非文本文件(返回空文件)

这个问题涉及到Java编程中的Huffman解压缩算法以及处理非文本文件的问题。下面是对这个问题的完善且全面的答案:

Huffman解压缩算法是一种常用的无损数据压缩算法,它通过对数据进行编码和解码来实现压缩和解压缩的功能。在Java中,可以使用自己实现的Huffman解压缩算法来处理文本文件的解压缩操作。

然而,当尝试使用Huffman解压缩算法来解压缩非文本文件时,可能会遇到问题,即解压缩后的文件为空文件。这是因为Huffman解压缩算法是针对文本数据设计的,对于非文本文件,解压缩后的数据可能无法正确还原。

要解决这个问题,可以考虑以下几个方面:

  1. 文件类型判断:在解压缩之前,可以通过文件的扩展名或者文件头部信息来判断文件的类型。如果是非文本文件,可以选择不进行解压缩操作,直接返回原始文件。
  2. 压缩算法选择:对于非文本文件,可以选择其他适合的压缩算法来进行压缩和解压缩操作。常见的非文本文件压缩算法包括ZIP、GZIP等。可以根据具体的需求选择合适的压缩算法。
  3. 文件转换:如果需要对非文本文件进行解压缩操作,并且需要还原原始文件,可以考虑在解压缩之后进行文件格式的转换。例如,可以将解压缩后的数据转换为字节流或者二进制流,并保存为相应的文件格式。

总结起来,对于Java中的My Huffman解压缩算法来说,它主要适用于文本文件的解压缩操作。对于非文本文件,可以通过文件类型判断、选择其他压缩算法或者进行文件格式转换来解决解压缩后返回空文件的问题。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云原生应用平台(TKE):https://cloud.tencent.com/product/tke
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(移动推送、移动分析):https://cloud.tencent.com/product/mobile
  • 腾讯云数据库(MySQL、MongoDB、Redis等):https://cloud.tencent.com/product/db
  • 腾讯云区块链(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云视频处理(点播、直播):https://cloud.tencent.com/product/vod
  • 腾讯云音视频通信(TRTC):https://cloud.tencent.com/product/trtc
  • 腾讯云安全加速(DDoS防护、Web应用防火墙):https://cloud.tencent.com/product/sa
  • 腾讯云元宇宙(QCloud XR):https://cloud.tencent.com/product/xr
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

gzip压缩算法

我们先对这里的串做一个说明,它是指一个任意字节的序列,而不仅仅是可以在文本文件中显示出来的那些字节的序列。这里的串强调的是它在文件中的位置,它的长度随着匹配的情况而变化。...1.2.3 使用Huffman编码进行压缩和解压缩 为了在解压缩的时候,得到压缩时所使用的Huffman树,我们需要在压缩文件中,保存树的信息,也就是保存每个符号的出现次数的信息。...将每个符号的出现次数的信息保存在压缩文件中,将文件中的每个符号替换成它的Huffman编码,并输出。 解压缩: 得到保存在压缩文件中的,每个符号的出现次数的信息。...2)通过参数,设置一些全局变量的值,对我们而言,有用的是:ascii(表示为文本文件,可以根据本地的换行符来代替解压后的文件中的换行符)、decompress(表示进行解压操作)和level(转换操作的级别...返回: 函数压缩方法(一般为“deflate”,程序中的返回值为8) 在文件gzip-1.2.4/unzip.c中: 函数: int unzip(in, out) int in, out;

2K10

linux中zip文件解压命令,Linux中zip压缩和unzip解压缩命令使用方法

-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其它文件解压缩到目录中 -v:执行是时显示详细的信息 -z:仅显示压缩文件的备注文字 -a:对文本文件进行必要的字符转换 -b:不要对文本文件进行字符转换...zip -g new1.zip my32.doc (6)将更改过的文件添加到压缩包中 备注:如果当初 my2*.doc 都已经压缩进 new1.zip 里面了,但是后来 my2*.doc 中有几个文件有更改...zip -u new1.zip my2*.doc (7)删除除 .zip 文件中的指定文件 备注:如果当初 my18.doc 是压缩在 new1.zip 中的一个文件,现在这条命令把它从压缩文件中抽走并删掉...zip -d new1.zip my18.doc 2,主要参数 -f 更新现有的文件 -u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中 -d 指定文件解压缩后所要存储的目录...原因:在DOS/windows里,文本文件的换行符为rn,而在*nix系统里则为n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个^M。

6.8K30
  • Java系列 | MJDK 如何实现压缩速率的 5 倍提升?

    Java 应用中对压缩库的使用包括:处理 HTTP 请求时对 body 的压缩/解压缩操作、使用消息队列服务时对大消息体(如>1M)的压缩/解压缩、数据库写入前及读取后对大字段的压缩/解压缩操作等。...期间出现多种经典算法,如 Huffman 编码、LZ 系列编码等。...1989年,Phil Katz推出文件归档软件 PKZIP(zip 前身),并公开文件归档格式 zip 及其使用的数据压缩算法 deflate(Huffman 与 LZ77 的组合算法)的所有技术参数。...(1)JDK 原生压缩类库(zlib 压缩库) zip 文件压缩/解压缩代码 demo(Java) public class ZipUtil { //压缩 public void compress...JDK 层面变更 3.2.2 优化效果 测试说明 测试集:Silesia corpus 测试内容:GZip 压缩/解压缩文件、Zip 压缩/解压缩文件 测试结论 兼容性测试(通过):改造后的 Java

    50430

    Golang语言情怀-第46期 Go 语言标准库翻译 compressbzip2

    r读取bzip2压缩数据并解压缩返回给调用者的io.Reader。...若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。   参  数:   -c或--stdout  将压缩与解压缩的结果送到标准输出。  ...-d或--decompress  执行解压缩。   -f或--force  bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。  ...-k或--keep  bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。   -s或--small  降低程序执行时内存的使用量。  ...-t或--test  测试.bz2压缩文件的完整性。   -v或--verbose  压缩或解压缩文件时,显示详细的信息。

    61230

    Gzip之后继者Brotli浅析之CDN厂商的智能压缩,服务器Brotli设置

    Brotli 通过变种的 LZ77 算法、Huffman 编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比,它有着更高的压缩效率。...预定义的算法可以提升较小文件的压缩密度。 使用brotli替换deflate来对文本文件压缩通常可以增加20%的压缩密度,而压缩与解压缩速度则大致不变。...图二,我们看到 Brotli 的解压缩速度与 Gzip 非常相似,但是远远超出 bzip2 和 lzma2,尽管它们相较于 Gzip 有更好的压缩比,但是它们解压缩的速度要慢几倍,和 Brotli 一比...better-than-gzip-compression-with-brotli 服务器支持Brotli压缩算法 支持Brotli压缩算法的浏览器使用的内容编码类型为br http请求头:Accept-Encoding: gzip, deflate, sdch, br http返回头...如果值为always,则总是使用压缩过的文件,而不判断浏览器是否支持。 brotli:是否启用在on-the-fly方式压缩文件,启用后,将会在响应时对文件进行压缩并返回

    1.5K00

    【IO】JavaIO流:字节流、字符流、缓冲流、转换流、序列化流等

    字符流 字符流: 字符流 : 字节流 + 字符集 特点 输入流:一次读一个字节,遇到中文,一次读多个字节 输出流:底层会把数据按照指定的编码方式进行编码,变成字节再写入文件 适用于:对纯文本文件进行读写操作...buffer):一次读取数组长度的数据,读取到末尾返回 -1 参方法,按照字节进行读取,读取中文时一次读取多个字节,读取后解码,返回一个整数。...读取到文件末尾,read()返回 -1。...、 缓冲区没数据,从文件中获取数据并写入缓冲区,每次尽可能装满缓冲区,若文件也没有数据,返回 -1 缓冲区有数据,直接读取缓冲区 参read() —— 一次读取一个字节,中文则一次读取多个字节,把字节解码并转换成十进制...压缩流 / 解压缩解压缩流: **解压本质:**把压缩包中地每一个ZipEntry对象按照层级拷贝到本地的另一个文件夹中去。

    28420

    Java IO 操作基础2---操作 ZIP 压缩文件

    上一篇 Java 类别的文章中介绍了一下 Java 中普通文件的相关操作,包括:文件读取和写入、文件复制、文件移动等操作。...output.setComment("This is my zip file"); // 开始压缩文件 zipFile(output, inputFile, "");...我在工程目录下创建了一个 testFolder 文件夹,里面包含了一个文件本件(文本1.txt)和另一个子文件夹,这个子文件夹下有一个文本文件(魁拔之书.txt)。运行程序: ?...3、getName() // 返回当前解压的文件名 4、getEntry() // 通过压缩时指定的文件名获取 "入口"对象(ZipEntry 对象) 5、size() // 返回 Zip 文件中...output.setComment("This is my zip file"); // 开始压缩文件 zipFile(output, inputFile

    2.6K20

    Python实现压缩和解压缩

    压缩和解压缩是日常常用的操作,不管是windows上图形界面的操作,还是linux上用命令来进行压缩解压缩,总的而言都还是比较方便的。...但用代码来实现就没做过,近期也得实现代码压缩与解压缩操作,所以就抽时间来研究一下。...一、zip文件压缩和解压缩实现import osimport zipfile# 函数功能是zip_file_list所有文件,和zip_dir_list所有目录下的所有文件,被压缩到一个zip_file_name...for root, dirs, files in os.walk(tmp_dir): # 如果想要目录为时仍将该目录压缩进去,该目录也要压缩一遍;反之请将以下行注释掉...(zip_file_name, path=".")二、tar文件的压缩与解压缩实现除了直接的.tar文件,还包括.tar.gz/.tar.bz2/.tar.xz等格式文件的压缩与解压缩实现。

    6410

    速度与压缩比如何兼得?压缩算法在构建部署中的优化

    Java 项目也是如此,由于 Java 服务框架繁多,依赖也多,通常这些服务打包后也要占据百兆级别的空间,耗时也会达到十多秒。...下图是我们的 pack 步骤的中位数,基本上大部分的 Java 服务和 Node.js 服务都至少要消耗 13s 左右的时间来做压缩打包 。 ?...本文中我们使用的测试项目为美团内部的较大型的 C++ 项目,其中文件类型除去 C++、Python、Shell 代码文件,还有 NLP、工具等二进制数据(不包括 .git 中存储的提交数据),数据类型比较全面...gzip gzip 是基于 DEFLATE 的算法,它是 LZ77 和 Huffman 编码 的结合。...Pzstd 同样支持文件的并行解压缩解压缩使用 Zstandard 压缩的文件时,PZstandard 在一个线程中执行 IO,而在另一个线程中进行解压缩

    2.6K10

    Linux||常用命令(二)

    压缩与解压缩 tar:tape archive 压缩或解压缩文件 常见用法 tar [参数] [待解压包] # 解压 tar [参数] [待压缩文件/目录] # 压缩 常见参数 -c...# 创建一个新的tar归档文件(创建压缩文件) -x # 从已有的tar归档文件里提取文件解压缩文件) -f # 输出结果到文件或设备 -v # 在处理文件时显示文件的处理进度 -j # 将输出重定向给...文件查看 cat # 查看文件 head # 查看文件前10行 tail # 查看文件末尾10行 less # 少看一点 more # 多看一点 1. cat concatenate 查看文本文件的内容...常见参数 -A # 列出所有内容,包括特殊符号,如制表符 -n # 打印出所有行号 -b # 仅打印空白行行号 常见用法 cat [文件] > file # 将[文件]的标准输出结果重定向到file...文件 其他用法 zcat 查看压缩的文本文件 tac 逆向查看文件 2. head / tail 查看文件的前/后n行,默认为10行 常见参数 -n 常见用法 head -n [文件] 3. more

    26330

    Hadoop 数据压缩简介

    如果输入文件被压缩,在 MapReduce 读取时会自动解压缩,根据文件扩展名来确定使用哪个编解码器。...2.1 Gzip gzip 是 Hadoop 内置压缩方法,基于 DEFLATE 算法,组合 LZ77 和 Huffman 编码。 2.2 Bzip2 bzip2 能够进行高质量的数据压缩。...Bzip2 比 gzip 压缩更有效(压缩后文件更小),但速度较慢。 Bzip2 的解压缩速度比压缩速度快,但它仍然比其他方法慢。...但这意味着第二个 Mapper 将在文件中大约 128MB 的任意字节处开始。gzip 用于解压缩输入的上下文字典在这为,这意味着 gzip 解压缩器将无法正确解释字节。...Bzip2文件压缩效果良好,也可以拆分,但是解压缩算法速度比较慢,无法跟上在 Hadoop 作业中常见的流式磁盘读取。

    1.6K20

    程序员需要了解的硬核知识之压缩算法

    认识压缩算法 我们想必都有过压缩和 解压缩文件的经历,当文件太大时,我们会使用文件压缩来降低文件的占用空间。...压缩算法(compaction algorithm)指的就是数据压缩的算法,主要包括压缩和还原(解压缩)的两个步骤。 其实就是在不改变原有文件属性的前提下,降低文件字节空间和占用空间的一种算法。...可用于对数据的准确性要求严格的场合,如可执行文件和普通文件的压缩、磁盘的压缩,也可用于多媒体数据的压缩。该方法的压缩比较小。如差分编码、RLE、Huffman编码、LZW编码、算术编码。...文本文件是由不同类型的字符组合而成的,而且不同字符出现的次数也是不一样的。例如,在某个文本文件中,A 出现了 100次左右,Q仅仅用到了 3 次,类似这样的情况很常见。...文件 24576字节 4652字节 19% 可逆压缩和可逆压缩 最后,我们来看一下图像文件的数据形式。

    1.1K30

    Node zip压缩和解压缩

    这里还需要注意的是,文件的内容都需要手动添加,如果仅仅是zip.file("a.txt");只是在 zip 对象中创建了内容为的txt文件,而且它只是存在于内存中,需要写文件操作后才会真正存到磁盘。...补充说明:unzip为.zip压缩文件解压缩程序。...-u 与-f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。 -v 执行是时显示详细的信息。 -z 仅显示压缩文件的备注文字。 -a 对文本文件进行必要的字符转换。...-b 不要对文本文件进行字符转换。 -C 压缩文件中的文件名称区分大小写。 -j 不处理压缩文件中原有的目录路径。 -L 将压缩文件中的全部文件名改为小写。...unzip命令则用来解压缩zip文件

    2.8K20

    Linux 命令(103)—— unzip 命令

    [-d EXDIR] [ZIP_FILE…] 表示 ZIP 存档文件,[FILE…] 表示待处理的 ZIP 存档文件中的文件列表,[-x FILE…] 表示不处理的文件列表,[-d EXDIR] 表示解压缩后的文件存放的目录...-Z 等于执行 zipinfo(1) 命令,用于查看 zip 文件的整体信息 -c 将解压缩后的文件内容输出到标准输出(屏幕),并对字符做适当的转换。...-v 执行时显示详细的信息 -z 仅显示压缩文件的备注信息 -a 对文本文件进行必要的字符转换 -b 将所有文件视为二进制文件,不对文本文件进行字符转换 -B 对本地即将被覆盖的文件进行备份...当 UNICODE_SUPPORT 可用时,选项 -U 强制 unzip 将 UTF-8 编码的文件名中的所有 ASCII 字符转义为 #uxxx(对于UCS-2字符,或者对于需要 3 个字节的 UNICODE...unzip test.zip (3)如果当前目录存在同名的文件解压缩时不覆盖原有文件。 unzip -n test.zip (4)解压缩时覆盖原有文件,不进行询问。

    6.3K10

    压缩算法简介

    这些算法通过不同的方式对数据进行编码和解码,以实现数据压缩和解压缩的目的。...2 压缩算法的应用 压缩算法在各种领域广泛应用,包括但不限于以下几个方面: 文件传输和存储:压缩算法可以减少文件的大小,使文件传输更加高效快速。...Huffman霍夫曼(Huffman)编码使用变长编码表对源符号进行编码,其中变长编码表是通过一种评估来源符号出现机率的方法得到的,出现机率高的字母使用较短的编码,反之出现机率低的则使用较长的编码,这便使编码之后的字符串的平均长度...压缩函数 compress_data 将输入数据进行压缩,并将压缩后的数据存储在 compressed_data 中,返回压缩后的数据长度;解压缩函数 decompress_data 对压缩后的数据进行解压缩...,并将解压缩后的数据存储在 decompressed_data 中,返回解压缩后的数据长度。

    23710

    Linux 命令(117)—— gzip 命令

    1.命令简介 gzip(GNU zip)命令用来压缩和解压缩文件,是在 Linux 系统中经常使用的一个对文件进行压缩和解压缩的命令,采用 LZ77 无损压缩算法,压缩后的文件一般使用 .gz 后缀。...据统计,gzip 命令对文本文件有 60%~70% 的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。...此选项仅在某些 Unix 系统上支持。...--decompress, --uncompress 解压缩 -f, --force 强制压缩或解压缩,即使文件具有多个链接或相应的文件已经存在,或者压缩数据是从终端读取或写入终端的 -h, --help...解压缩时,即使原文件名和时间戳存在也不还原。该选项为解压缩时的默认选项 -N, --name 压缩时,始终保存原始文件名和时间戳;这是默认的。解压缩时,如果存在,则恢复原始文件名和时间戳。

    4.4K10

    Linux及常用工具配置

    ,删除拒绝远程登录的账号 启动vsftpd服务 - - - 五、基本工具 更新yumyum updateyum -y install vimyum -y install gcc-c++yum -y install...:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=$PATH:${JAVA_HOME}/bin - - - Scala 无需安装,直接解压缩后配置环境变量既可用...vim /etc/my.cnf 在mysqld下面添加一行 skip-grant-tables 保存后启动MySQL service mysqld start 此时可用密码直接进入MySQL mysql.../redis-server 但是这样启动后不会返回命令行,所以在命令后加&,启动redis后返回命令行 ..../redis-server & - - - Hadoop 无需安装,直接解压缩后修改配置文件既可用,但需要先安装Jdk 不配私钥只能玩单机版,就个人学习而言,单机版已经足够 以hadoop-2.7.2为例

    2K20
    领券