2013-02-21 76 views
0

我正在尝试在我的项目中实现SevenZipSharp功能。我已经阅读了他们的文档,并检查了注释的源代码,但是我很难计算出CompressFilesEncrypted方法。我在archiveName参数上收到一条错误,指出“访问被拒绝”。使用C#SevenZipSharp - 压缩时出错

任何已成功使用过此功能的人,请给我一些关于如何完成此实现的建议?

这里是我正在使用的代码(似乎很简单):

 string fileName = Path.GetFileName(filepath); 
     string outputDir = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
     try 
     { 
         SevenZipCompressor compressor = new SevenZipCompressor(); 
         compressor.CompressionMethod = CompressionMethod.Default; 
         compressor.CompressionLevel = CompressionLevel.Normal; 
         compressor.ZipEncryptionMethod = ZipEncryptionMethod.Aes256; 
         compressor.ArchiveFormat = OutArchiveFormat.Zip; 
         **compressor.CompressFilesEncrypted(outputDir, "12345",filepath);** 
     } 
     catch (Exception exc) 
     { 
      MessageBox.Show(exc.Message); 
     } 

任何有识之士深表感谢!我知道有人必须先做出这项工作:)

+0

我不明白哪一行给你一个例外?你确定你有权从应用程序中写入我的文档吗? – d1mitar 2013-02-21 23:29:30

+1

CompressFilesEncrypted在outputDir上引发错误 - 访问被拒绝。我在整个程序中写入MyDocuments,所以我确信我有权访问。 – Encryption 2013-02-21 23:36:14

+0

文件名称如何?它有效吗? – 2013-02-21 23:43:09

回答

0

更正的代码和问题已解决。更正后的代码如下:

SevenZipCompressor compressor = new SevenZipCompressor(); 
      compressor.CompressionMethod = CompressionMethod.Deflate; 
      compressor.CompressionLevel = CompressionLevel.High; 
      compressor.ZipEncryptionMethod = ZipEncryptionMethod.Aes256; 
      compressor.ArchiveFormat = OutArchiveFormat.Zip; 
      compressor.CompressionMode = CompressionMode.Create; 
      compressor.EventSynchronization = EventSynchronizationStrategy.AlwaysAsynchronous; 
      compressor.FastCompression = false; 
      compressor.EncryptHeaders = true; 
      compressor.ScanOnlyWritable = true; 
      compressor.CompressFilesEncrypted(outputDir, password, filepath); 

输出目录需要具有适当扩展名的文件名。原来是问题的一部分。