我正在编写一个需要压缩文件的程序。 这将在Linux和Windows机器上运行。它在Linux中运行得很好,但我无法在Windows中完成任何操作。 要发送命令,我使用的是apache-net项目。我也尝试过使用Runtime()。exec 但它不起作用。 有人可以提出建议吗?
CommandLine cmdLine = new CommandLine("zip");
cmdLine.addArgument("-r");
cmdLine.addArgument("documents.zip");
cmdLine.addArgument("documents");
DefaultExecutor exec = new DefaultExecutor();
ExecuteWatchdog dog = new ExecuteWatchdog(60*1000);
exec.setWorkingDirectory(new File("."));
exec.setWatchdog(dog);
int check =-1;
try {
check = exec.execute(cmdLine);
} catch (ExecuteException e) {
} catch (IOException e) {
}
答案 0 :(得分:6)
Java在java.util.zip。*中提供了自己的压缩库,它支持.zip格式。可以找到拉链文件夹的示例here。这是一个适用于单个文件的快速示例。使用本机Java的好处是它可以在多个操作系统上运行,并且不依赖于安装特定的二进制文件。
public static void zip(String origFileName) {
try {
String zipName=origFileName + ".zip";
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipName)));
byte[] data = new byte[1000];
BufferedInputStream in = new BufferedInputStream(new FileInputStream(origFileName));
int count;
out.putNextEntry(new ZipEntry(origFileName));
while((count = in.read(data,0,1000)) != -1) {
out.write(data, 0, count);
}
in.close();
out.flush();
out.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
答案 1 :(得分:3)
相同的代码在Windows中不起作用。 Windows没有像Linux那样的“zip”程序。您将需要查看Windows 7是否具有命令行zip程序(我不认为它;请参见此处:http://answers.microsoft.com/en-us/windows/forum/windows_vista-files/how-to-compress-a-folder-from-command-prompt/02f93b08-bebc-4c9d-b2bb-907a2184c8d5)。您可能需要做两件事
答案 2 :(得分:0)
您可以使用内置的compact.exe在dos中压缩/解压缩
它显示或改变NTFS分区上文件的压缩。
COMPACT [/ C | / U] [/ S [:dir]] [/ A] [/ I] [/ F] [/ Q] [文件名[...]]
/ C压缩指定的文件。将对目录进行标记,以便之后添加的文件将被压缩。
/ U解压缩指定的文件。将对目录进行标记,以便之后添加的文件不会被压缩。
/ S对给定目录和所有子目录中的文件执行指定的操作。默认“dir”是当前目录。
/ A显示具有隐藏或系统属性的文件。默认情况下会省略这些文件。
/ I即使发生错误,仍继续执行指定的操作。默认情况下,COMPACT在遇到错误时停止。
/ F强制对所有指定文件执行压缩操作,即使是已经压缩的文件也是如此。默认情况下会跳过已压缩的文件。
/ Q仅报告最基本的信息。
filename指定模式,文件或目录。
在没有参数的情况下使用,COMPACT显示当前目录及其包含的任何文件的压缩状态。您可以使用多个文件名和通配符。您必须在多个参数之间放置空格。
实施例
紧凑
显示当前目录中的所有文件及其紧凑状态。
compact file.txt
显示文件file.txt
的紧凑状态压缩文件.txt / C
压缩file.txt文件。