Tag: 压缩

线程“main”中的exceptionjava.util.zip.DataFormatException:不正确的标头检查

我用Java编写了一个应用程序,用于使用Deflaor和Inflator压缩和解压缩String。 但是当我运行以下代码时,我得到以下exception。 任何人都可以告诉我一些解决方案 Deflated String:x Q n 0 @>”C E 3 ,[ d 9 P x O hcy L Ct {~m I: $ %\HD+ I NwG Exception in thread “main” java.util.zip.DataFormatException: incorrect header check at java.util.zip.Inflater.inflateBytes(Native Method) at java.util.zip.Inflater.inflate(Inflater.java:223) at java.util.zip.Inflater.inflate(Inflater.java:240) at sample_ftp.Sample_ftp.main(Sample_ftp.java:70) Java Result: 1 我的代码是这个 // Encode a String into bytes String inputString […]

缩短Java中已经很短的字符串

我正在寻找一种尽可能缩短已经很短的字符串的方法。 该字符串是主机名:端口组合,可能看起来像“ my-domain.se:2121 ”或“ 123.211.80.4:2122 ”。 我知道由于需要的开销和缺乏重复,常规压缩对于字符串的问题几乎是不可能的,但我知道如何做到这一点。 因为字母表限制为39个字符( [az] [0-9] – :。 ),所以每个字符可以容纳6位。 与ASCII相比,这可以减少高达25%的长度。 所以我的建议是这样的: 使用某种自定义编码将字符串编码为字节数组 将字节数组解码为UTF-8或ASCII字符串(这个字符串显然没有任何意义)。 然后反转该过程以获取原始字符串。 所以我的问题: 这可行吗? 有没有更好的办法? 怎么样?

将字节数组解码为已用Java压缩的位图

我正在以下列方式压缩位图 Bitmap bmpSig = getMyBitMap(); int size = bmpSig.getWidth() * bmpSig.getHeight(); ByteArrayOutputStream out = new ByteArrayOutputStream(size); bmpSig.compress(Bitmap.CompressFormat.JPEG, 100, out); byte[] bytSig = out.toByteArray(); 然后我尝试从字节数组中在Android ImageView中显示图像。 当我这样做时,我得到的图像是完全黑色的图像。 ImageView myImg = (ImageView) findViewById(R.id.img_view); myImg.setImageBitmap(BitmapFactory.decodeByteArray(bytSig, 0, bytSig.length)); 我假设它是因为我在BitmapFactory.decodeByteArray()之前错过了一个步骤来反转jpeg压缩。 或者我误解了压缩是如何工作的?

如何在写入文件时压缩文件?

有没有人知道如何压缩你写的流? 我试图避免将文件写入磁盘,并且想知道我是否可以在将数据写入流时压缩数据。 这背后的用例是原始文件将非常大,我们希望避免将整个解压缩到磁盘上。

我应该如何在java中提取压缩文件夹?

我使用以下代码在Java中提取zip文件。 import java.io.*; import java.util.zip.*; class testZipFiles { public static void main(String[] args) { try { String filename = “C:\\zip\\includes.zip”; testZipFiles list = new testZipFiles( ); list.getZipFiles(filename); } catch (Exception e) { e.printStackTrace(); } } public void getZipFiles(String filename) { try { String destinationname = “c:\\zip\\”; byte[] buf = new byte[1024]; ZipInputStream zipinputstream = null; […]

Java – 读取BZ2文件并动态解压缩/解析

我有一个相当大的BZ2文件,里面有几个文本文件。 我可以使用Java解压缩BZ2文件中的某些文件并动态解压缩/解析数据吗? 假设一个300mb的BZ2文件包含1 GB的文本。 理想情况下,我希望我的java程序能够读取1 mb的BZ2文件,动态解压缩,对其进行操作并继续读取BZ2文件以获取更多数据。 那可能吗? 谢谢

如何用Java打印tar.gz文件的内容?

我必须实现一个允许打印tar.gz文件中所有文件内容的应用程序。 例如: 如果我在名为testx的文件夹中有三个这样的文件: A.txt包含“上帝拯救女王”的字样 B.txt包含“Ubi maior,minor cessat”字样 C.txt.gz是一个用gzip压缩的文件,其中包含文件c.txt,其中包含“Hello America !!”字样。 所以我压缩testx,获取压缩的tar文件:testx.tar.gz。 因此,对于我的Java应用程序,我想在控制台中打印: “上帝保佑女王” “Ubi maior,minor cessat” “你好美国!!” 我已经实现了ZIP版本并且它运行良好,但保留了来自apache ant http://commons.apache.org/compress/的 tar库,我注意到它不像ZIP java utils那么容易。 有人能帮帮我吗? 我已经开始在网上查看如何实现我的目标,所以我有以下代码: GZIPInputStream gzipInputStream=null; gzipInputStream = new GZIPInputStream( new FileInputStream(fileName)); TarInputStream is = new TarInputStream(gzipInputStream); TarEntry entryx = null; while((entryx = is.getNextEntry()) != null) { if (entryx.isDirectory()) continue; else { System.out.println(entryx.getName()); if […]

非对称java压缩

我有一个数据样本: byte[] b = new byte[]{120, 1, -67, -107, -51, 106, 20, 81, 16, -123, 107, 18, -51, -60, 31, -30, 117, -4, -53, -60, -123, 25, 70, 71, 23, -111, 89, 12, 8, -83, 49, 4, -14, -93, -63, 73, 32, 89, -55, -112, -123, 10, -30, 66, 69, -110, 69, -64, -107, -77, […]

如何在Java中压缩文件和文件夹?

请看下面的代码。 public void startCompress(String path,String fileName,String outputLocation,int compressType,int filSize) throws Exception { System.out.println(“Input Location: “+path); System.out.println(“Output Location: “+outputLocation); System.out.println(compressType); byte[] bs=new byte[filSize]; System.out.println(filSize); FileOutputStream fos=new FileOutputStream(outputLocation+”/test.zip”); System.out.println(fos.toString()); ZipOutputStream zos=new ZipOutputStream(fos); ZipEntry ze = new ZipEntry(fileName); zos.putNextEntry(ze); FileInputStream inputStream=new FileInputStream(path); int len; while((len=inputStream.read(bs))>0){ zos.write(bs, 0, len); } inputStream.close(); zos.closeEntry(); zos.close(); } 在上面的代码中,我们使用java.util.zip包压缩文件。 但我们有一个问题。 也就是说,如果我们选择多个文件,则只压缩一个文件。 如果我们选择一个文件夹,压缩就不起作用了。 如何修复此问题以压缩文件,文件,文件夹,文件夹甚至嵌套文件夹? […]

我可以使用压缩oops多于32 GB的堆

我能理解,使用压缩oops,我们只能使用32 GB的RAM。 有没有什么可以通过分配2堆或其他什么来使用更多? 谢谢Vineeth