Java 数据压缩算法:压缩字符串

Java 数据压缩算法:压缩字符串,java,file,security,compression,Java,File,Security,Compression,所以,我基本上是在开发一个桌面应用程序,在这个应用程序中,你提供一个文件,它对它进行压缩,然后以压缩字符串格式返回给你。我的意思是,我读取文件的字节,压缩这些字节,然后基本上把它们转换成原始的.txt文件。转换过程很简单,我想知道的是如何压缩文件。我知道我想做少丢失的数据压缩,因为这是我将如何得到文件解压缩,但我只是不知道该使用哪种压缩算法,或者我是否需要自己编程 例如: public String CompressFile(Bytes fileInformation[]) { for(i

所以,我基本上是在开发一个桌面应用程序,在这个应用程序中,你提供一个文件,它对它进行压缩,然后以压缩字符串格式返回给你。我的意思是,我读取文件的字节,压缩这些字节,然后基本上把它们转换成原始的.txt文件。转换过程很简单,我想知道的是如何压缩文件。我知道我想做少丢失的数据压缩,因为这是我将如何得到文件解压缩,但我只是不知道该使用哪种压缩算法,或者我是否需要自己编程

例如:

public String CompressFile(Bytes fileInformation[]) {
   for(int i = 0; i < fileInformation; i++) {
      if(fileInformation[i].equals(fileInformation[i + 1]) {
        // Say that the file has two instances of the same byte than no need to 
        // include it twice or thrice.
      }
   }
}
公共字符串压缩文件(字节文件信息[]){
for(int i=0;i
上面是一个非常基本的例子。但是我想要一些更复杂的东西来压缩文件,直到剩下的是真正的熵或随机性。不再压缩,这是你能得到的随机性。从这些数据中,我可以解压缩文件,并在用户提供压缩数据时将其呈现给用户。简单地说,我想使用高效、快速、有效且功能强大的压缩算法。提前感谢

编辑: 为了更好地表达这一点,我需要压缩或缩小文件包含的字符串或字节序列,而不是文件本身


这个问题的要点是我想压缩一个int数组,比如如果我有一个数组{1,4,5,1,4}然后我想把一个和四个放在一起。这没有多大用处,但随着数组的增大,压缩算法可以帮助大幅减少数组的长度。

因为我现在理解这个问题是非常不相关的。我想要的是一种压缩数据的方法,因为我的内存无法处理它。但现在我意识到我应该做的不是这样,而是将文件分块读取,这样不管我是否压缩它。下面是如何做:

try {
    File file = new File("myFile");
    FileInputStream is = new FileInputStream(file);
    byte[] chunk = new byte[1024];
    int chunkLen = 0;
    while ((chunkLen = is.read(chunk)) != -1) {
        // your code..
    }
} catch (FileNotFoundException fnfE) {
    // file not found, handle case
} catch (IOException ioE) {
    // problem reading, handle case
}
至于压缩函数,如果有人想要有一个很棒的算法,基本上你必须把字节数组转换成字符串,然后把它通过这个压缩函数。它可以工作,但是对于大字节数组来说速度很慢


当然,为了再次写入文件,我们必须使用代替和。希望这能帮助某人:)

为什么不能使用Java内置的压缩实用程序?因为我需要压缩字节序列的字符串,而不是文件本身。课程还行,但我需要更快、更简单、更高效的东西。你试过其他第三方图书馆吗?他们确实支持更多的算法。你的问题非常广泛,这不能在数据流上“一般”做到。压缩依赖于数据源的统计特性,以便用较少的比特压缩频繁模式。如果源文件是一个文件,则可以对其进行分析。但是,如果您不想以前分析文件,您需要一个非常好的流统计模型,否则即使是最好的压缩方法(在特定类型的源上)也可能会增加数据量(如果实际源与模型不同)。没有压缩算法可以压缩所有int数组。现在,如果你有一些数组的统计特性,你可以设计一些压缩算法。对于图像,已经做了许多工作来模拟它们的行为,并将其用于标准的压缩方法中。如果需要压缩图像,请使用它们。