ssisのC#スクリプトを使用してファイルを解凍しようとしています。 私は最初に以下のようにIonicZip.dllを使っていましたが、うまくいきました。スタンドアロンでファイルを抽出するexe - C#
private string ExtractFileToDirectory(string strSourceDirectory, string strDestinationDirectory, string strFileName)
{
string extractFileName = String.Empty;
try
{
ZipFile zip = ZipFile.Read(Path.Combine(strSourceDirectory ,strFileName));
Directory.CreateDirectory(strDestinationDirectory);
foreach (ZipEntry e in zip)
{
e.Extract(strDestinationDirectory, ExtractExistingFileAction.OverwriteSilently);
extractFileName = e.FileName;
}
zip.Dispose();
return extractFileName;
}
catch
{
//
}
}
ただし、サーバーにdllを展開する権限はありません。そこで私は7Za.exe(スタンドアロンのexe)に切り替えました。途中で私は7z、cab、zip、gzip、bzip2、Zとtar形式しかサポートしていないことに気づいた。 zipに必要なファイルには拡張子がありません。
スタンドアロンのexeでファイルを抽出する方法はありますか?私はssisでC#4.0を使用しています。
私の7zipをコードは、.NET Framework 4.5がSystem.Io.Compression.ZipFile
クラスを使用しているため、次のことができ、/解凍ファイルを圧縮するには
string str7ZipPath = @"C:\Tools Use\7zip";
string str7ZipArgs = "a -tzip "+ @"""C:\Source\FileA"""+ @" ""C:\Zip\*.*""";
ProcessStartInfo psi = new ProcessStartInfo();
psi.CreateNoWindow = false;
psi.UseShellExecute = false;
psi.FileName = str7ZipPath + "\\7za.exe";
psi.WindowStyle = ProcessWindowStyle.Normal;
psi.Arguments = str7ZipArgs;
try
{
using (Process proc = Process.Start(psi))
{
proc.WaitForExit();
}
}
catch (Exception ex)
{
}
これをチェックしてください:https://blogs.msdn.microsoft.com/microsoft_press/2010/02/03/jeffrey-richter-excerpt-2-from-clr -via-c-third-edition/ – Sidewinder94
とFW上ですでに利用可能な.netリソースはどうですか? https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile%28v=vs.110%29.aspx – Gusman
.NET Frameworkを使用してzipファイルを処理すると、メモリが不足しています( System.IO.Packaging)、これらの目的のために新しい名前空間を追加したことを完全に忘れていました:) – Sidewinder94