0

これは、圧縮ファイルに使用するメソッドです。

private void Compressions(string zipFile,string sources)
        {
            try
            {
                string zipFileName = zipFile;
                string source = sources;
                string output = @"c:\temp";
                string programFilesX86 = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFilesX86) + "\\Diagnostic Tool\\7z.dll";
                if (File.Exists(programFilesX86))
                {
                    SevenZipExtractor.SetLibraryPath(programFilesX86);
                }
                else
                {
                    string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\7z.dll";
                    SevenZipExtractor.SetLibraryPath(path);
                }
                string programFiles = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ProgramFiles) + "\\Diagnostic Tool\\7z.dll";
                if (File.Exists(programFiles))
                {
                    SevenZipExtractor.SetLibraryPath(programFiles);
                }
                else
                {
                    if (File.Exists(programFilesX86))
                    {
                        SevenZipExtractor.SetLibraryPath(programFilesX86);
                    }
                    else
                    {
                        string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\7z.dll";
                        SevenZipExtractor.SetLibraryPath(path);
                    }
                }
                SevenZipCompressor compressor = new SevenZipCompressor();
                compressor.ArchiveFormat = OutArchiveFormat.Zip;
                compressor.CompressionMode = CompressionMode.Create;
                compressor.TempFolderPath = System.IO.Path.GetTempPath();
                string t = Path.Combine(output, zipFileName);
                compressor.CompressDirectory(source, t,"*.txt");
                this.explorerWindow = Process.Start("explorer", String.Format("/select,{0}", t));
                this.TopMost = true;
            }
            catch (Exception err)
            {
                Logger.Write("Zip file error: " + err.ToString());
            }
        }

これは圧縮する行です:

compressor.CompressDirectory(source, t,"*.txt");

「*.txt」を追加しようとしたため、テキスト ファイルのみが圧縮されますが、他の多くの形式が圧縮されます。

私がやっているとき:compressor.CompressDirectory(source、t、メッセージは言う:文字列searchPattern

テキストファイルだけを圧縮したい。

編集**問題は、テキストファイルだけでなく、あらゆる種類のファイルを圧縮することです! 検索パターン "*.txt" は機能せず、代わりにテキスト ファイルのみを圧縮し、ファイルの拡張子を圧縮します。

4

1 に答える 1

2

メソッドのシグネチャを確認し、正しいオーバーロードを呼び出していることを確認してください。

3 つの文字列パラメーターのオーバーロードは次のように定義されます。

public void CompressDirectory(
        string directory, string archiveName, 
        string password)

あなたのコードは検索パターンを提供していません。「*.txt」のパスワードを設定しています

検索パターンを受け入れるオーバーロードの 1 つを使用します。

public void CompressDirectory(
        string directory, string archiveName,
        string searchPattern, bool recursion)

また

public void CompressDirectory(
        string directory, string archiveName,
        string password = "", string searchPattern = "*", bool recursion = true)
于 2013-08-07T08:31:57.233 に答える