java lzo压缩解压多文件
时间: 2023-10-14 21:25:46 浏览: 109
22、MapReduce使用Gzip压缩、Snappy压缩和Lzo压缩算法写文件和读取相应的文件
你可以使用 Java LZO 库来进行多文件压缩和解压缩。下面是一个示例代码:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.compress.compressors.lzma.LZMACompressorInputStream;
import org.apache.commons.compress.compressors.lzma.LZMACompressorOutputStream;
public class LzoUtil {
public static void compress(List<File> files, String outputFileName) throws IOException {
LZMACompressorOutputStream out = new LZMACompressorOutputStream(new FileOutputStream(outputFileName));
for (File file : files) {
FileInputStream in = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
in.close();
}
out.close();
}
public static void decompress(String inputFileName, String outputDirName) throws IOException {
FileInputStream in = new FileInputStream(inputFileName);
LZMACompressorInputStream lzmaIn = new LZMACompressorInputStream(in);
byte[] buffer = new byte[1024];
int len;
int fileIndex = 0;
while ((len = lzmaIn.read(buffer)) > 0) {
File outputFile = new File(outputDirName, "file" + (++fileIndex));
FileOutputStream out = new FileOutputStream(outputFile);
out.write(buffer, 0, len);
out.close();
}
lzmaIn.close();
}
public static void main(String[] args) throws IOException {
// 压缩文件
List<File> files = new ArrayList<>();
files.add(new File("file1.txt"));
files.add(new File("file2.txt"));
compress(files, "output.lzo");
// 解压文件
decompress("output.lzo", "output");
}
}
```
在上面的示例代码中,`compress` 方法接收一个文件列表和输出文件名作为参数,将文件列表中的所有文件压缩成一个 LZO 文件。`decompress` 方法接受输入文件名和输出目录名作为参数,将输入文件解压缩成多个文件,并将它们保存在指定的输出目录中。
你可以根据自己的需要修改这些方法来实现你的需求。
阅读全文