1

我正在使用这种方法来压缩和解密文件: AesZipFileEncrypter.zipAndEncrypt

这段代码:

AesZipFileEncrypter.zipAndEncrypt(new File("C:\Test\Folder\MyFile.txt"), new File("C:\Test\Folder\MyZip.zip"), password, aesEncrypter);

还压缩我的文件的文件夹树,而不仅仅是文件。例如:在创建的 zip 文件中添加 C:\Test\Folder\MyFile.txt 如果我想在根文件夹中只包含 MyFile.txt,我也会找到文件夹 C:\Test\Folder\MyFile.txt。有可能吗?

4

2 回答 2

3

这是解决方案:

    AESEncrypter aesEncrypter = new AESEncrypterBC();
    aesEncrypter.init(password, 0);
    AesZipFileEncrypter ze=new AesZipFileEncrypter(outputfilename, aesEncrypter);
    ze.add(inputfilename,new FileInputStream(inputfilename), password);
    ze.close();
于 2013-05-21T15:09:34.457 回答
0

在 Windows 中(看起来像你在其中)我遇到了同样的问题,它似乎取决于文件相对于你的应用程序的位置。为了解决这个问题,我将输入文件复制到本地目录,对其进行压缩和加密,然后将输出文件移回输出文件的预期位置。

public static File aesEncrypt(String inFileFullPath, String outFileFullPath, String aesPassword) throws IOException{
    File inFile = new File(inFileFullPath);
    File localInput = new File(inFile.getName());
    Files.copy(inFile, localInput);

    File outFile = new File(outFileFullPath);
    File localOutFile = new File(outFile.getName());

    AESEncrypter aesEncrypter = new AESEncrypterBC();
    aesEncrypter.init(aesPassword, 255);
    AesZipFileEncrypter ze = new AesZipFileEncrypter(localOutFile, aesEncrypter);
    ze.add(localInput, aesPassword);
    ze.close();

    Files.move(localOutFile, outFile);
    localInput.delete();
    return outFile;
}
于 2014-01-23T16:00:24.353 回答