using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace CsExtract { class Program { [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)] public static extern void LoadLibrary(String lpFileName); static void Main(string[] args) { if (Environment.Version.Major >= 4) { String folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"C:\Windows\Microsoft.NET\Framework\v2.0.50727"); folder = Path.GetFullPath(folder); LoadLibrary(Path.Combine(folder, "vjsnativ.dll")); } //展開するZIPファイルの設定 string zipPath = "C:\\test\\test.zip"; //展開先のフォルダの設定 string extractDir = "C:\\test\\extra"; //読み込む java.io.FileInputStream fis = new java.io.FileInputStream(zipPath); java.util.zip.ZipInputStream zis = new java.util.zip.ZipInputStream(fis); //ZIP内のファイル情報を取得 java.util.zip.ZipEntry ze; while ((ze = zis.getNextEntry()) != null) { if (!ze.isDirectory()) { //ファイル名 string fileName = System.IO.Path.GetFileName(ze.getName()); //展開先のフォルダ string destDir = System.IO.Path.Combine( extractDir, System.IO.Path.GetDirectoryName(ze.getName())); System.IO.Directory.CreateDirectory(destDir); //展開先のパス string destPath = System.IO.Path.Combine(destDir, fileName); //FileOutputStreamの作成 java.io.FileOutputStream fos = new java.io.FileOutputStream(destPath); //書込み sbyte[] buffer = new sbyte[8192]; int len; while ((len = zis.read(buffer, 0, buffer.Length)) > 0) { fos.write(buffer, 0, len); } //閉じる fos.close(); } } zis.close(); fis.close(); } } }