下面的方法需要引用“C:/WINNT/Microsoft.NET/Framework/v2.0.50727/vjslib.dll”DLL文件。。
using java.util.zip;
using java.io;
using java.util;
using java.io;
using java.util;
圧縮と解凍のメソッド
#region 圧縮と解凍のメソッド
private int Buffer = 2048;
private string LastMessage = "";
private const string MsgEmpty = "";
private const string MsgNotFoundFile = "ファイルを発見していません";
private const string MsgFileNotExist = "ファイル「{0}」がありません";
private const string MsgZipFileNotExist = "ZIPファイル「{0}」がありません";
/**//// <summary>
/// ファイルを圧縮する
/// </summary>
/// <param name="ZipFile">ZIPファイル</param>
/// <param name="FromDocument">圧縮のドキュメント</param>
/// <returns>
/// true : 圧縮成功
/// false : 圧縮失敗
/// </returns>
/// <remarks></remarks>
public bool AddToFile(string ZipFile, string FromDocument)
...{
try
...{
//ファイルリストを取得する
java.io.File F = new java.io.File(FromDocument);
String[] FileList = F.list();
F = null;
//ファイルリストが空の場合、処理終了
if (FileList == null || FileList.Length == 0)
...{
//メッセージを格納する
LastMessage = MsgNotFoundFile;
return false;
}
//ZIPファイルのパスの判断、なしの場合、このパスを作成する
if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(ZipFile)))
...{
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(ZipFile));
}
//ZIPファイルを作成する
java.io.FileOutputStream Dest = new java.io.FileOutputStream(ZipFile);
java.util.zip.ZipOutputStream ZipOut =
new java.util.zip.ZipOutputStream(new java.io.BufferedOutputStream(Dest));
java.io.BufferedInputStream Origin = null;
sbyte[] Data = new sbyte[Buffer];
string FilePath = null;
java.util.zip.ZipEntry Entry = null;
int Count;
//ZIPファイルへファイルを圧縮する
if (FromDocument.Substring(FromDocument.Length - 1, 1) != java.io.File.separator)
FromDocument += java.io.File.separator;
for (int i = 0; i < FileList.Length; i++)
...{
//ファイルの判断、ファイルが存在ないの場合、処理終了
FilePath = FromDocument + FileList[i];
java.io.File FFile = new java.io.File(FilePath);
if (FFile.exists() == false)
...{
//メッセージを格納する
LastMessage = string.Format(MsgFileNotExist, FilePath);
//ZIPファイルをオフする
ZipOut.close();
//作成したZIPファイルを削除する
java.io.File FZipFile = new java.io.File(ZipFile);
FZipFile.delete();
return false;
}
//ファイルのデータを読込むする
java.io.FileInputStream Fi = new java.io.FileInputStream(FilePath);
Origin = new java.io.BufferedInputStream(Fi, Buffer);
//ZIPファイルへファイルを格納する
Entry = new java.util.zip.ZipEntry(FileList[i]);
ZipOut.putNextEntry(Entry);
while ((Count = Origin.read(Data, 0, Buffer)) != -1)
...{
ZipOut.write(Data, 0, Count);
}
//ファイルをオフする
Origin.close();
}
//ZIPファイルをオフする
ZipOut.close();
//メッセージを格納する
LastMessage = MsgEmpty;
return true;
}
catch (Exception ex)
...{
//メッセージを格納する
LastMessage = ex.Message;
return false;
}
}
/**//// <summary>
/// ファイルを圧縮する
/// </summary>
/// <param name="ZipFile">ZIPファイル</param>
/// <param name="FromFiles">圧縮のファイル</param>
/// <returns>
/// true : 圧縮成功
/// false : 圧縮失敗
/// </returns>
/// <remarks></remarks>
public bool AddToFile(string ZipFile, string[] FromFiles)
...{
try
...{
//圧縮のファイルが空の場合、処理終了
if (FromFiles == null || FromFiles.Length == 0)
...{
//メッセージを格納する
LastMessage = MsgNotFoundFile;
return false;
}
//ZIPファイルのパスの判断、なしの場合、このパスを作成する
if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(ZipFile)))
...{
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(ZipFile));
}
//ZIPファイルを作成する
java.io.FileOutputStream Dest = new java.io.FileOutputStream(ZipFile);
java.util.zip.ZipOutputStream ZipOut =
new java.util.zip.ZipOutputStream(new java.io.BufferedOutputStream(Dest));
java.io.BufferedInputStream Origin = null;
sbyte[] Data = new sbyte[Buffer];
java.util.zip.ZipEntry Entry = null;
int Count;
//ZIPファイルへファイルを圧縮する
for (int i = 0; i < FromFiles.Length; i++)
...{
//ファイルの判断、ファイルが存在ないの場合、処理終了
java.io.File FFile = new java.io.File(FromFiles[i]);
if (FFile.exists() == false)
...{
//メッセージを格納する
LastMessage = string.Format(MsgFileNotExist, FromFiles[i]);
//ZIPファイルをオフする
ZipOut.close();
//作成したZIPファイルを削除する
java.io.File FZipFile = new java.io.File(ZipFile);
FZipFile.delete();
return false;
}
//ファイルのデータを読込むする
java.io.FileInputStream Fi = new java.io.FileInputStream(FromFiles[i]);
Origin = new java.io.BufferedInputStream(Fi, Buffer);
//ZIPファイルへファイルを格納する
Entry = new java.util.zip.ZipEntry(FromFiles[i]);
ZipOut.putNextEntry(Entry);
while ((Count = Origin.read(Data, 0, Buffer)) != -1)
...{
ZipOut.write(Data, 0, Count);
}
//ファイルをオフする
Origin.close();
}
//ZIPファイルをオフする
ZipOut.close();
//メッセージを格納する
LastMessage = MsgEmpty;
return true;
}
catch (Exception ex)
...{
//メッセージを格納する
LastMessage = ex.Message;
return false;
}
}
/**//// <summary>
/// ZIPファイルを解凍する
/// </summary>
/// <param name="ZipFile">ZIPファイル</param>
/// <param name="ExtractPath">解凍のドキュメント</param>
/// <returns>
/// true : 解凍成功
/// false : 解凍失敗
/// </returns>
/// <remarks></remarks>
public bool ExtractFile(string ZipFile, string ExtractDocument)
...{
try
...{
//ZIPファイルが存在ないの場合、処理終了
java.io.File FZipFile = new java.io.File(ZipFile);
if (FZipFile.exists() == false)
...{
//メッセージを格納する
LastMessage = string.Format(MsgZipFileNotExist, ZipFile);
return false;
}
FZipFile = null;
//ZIPファイルを読込むする
java.io.FileInputStream Fis = new java.io.FileInputStream(ZipFile);
java.util.zip.ZipInputStream ZipIn =
new java.util.zip.ZipInputStream(new java.io.BufferedInputStream(Fis));
java.util.zip.ZipEntry Entry;
//解凍のパスが存在の場合、このパスを作成する
if (!System.IO.Directory.Exists(ExtractDocument))
...{
System.IO.Directory.CreateDirectory(ExtractDocument);
}
string FileName = null;
//ZIPファイルからファイルの情報を読込むする
if (ExtractDocument.Substring(ExtractDocument.Length - 1, 1) != java.io.File.separator)
ExtractDocument += java.io.File.separator;
while ((Entry = ZipIn.getNextEntry()) != null)
...{
//ZIPファイルの中のファイルの名を取得する
FileName = Entry.getName();
FileName = FileName.Substring(FileName.LastIndexOf(java.io.File.separator) + 1);
//ZIPファイルの中のファイルにより、ファイル オブジェクトを作成する
java.io.FileOutputStream Dest = new java.io.FileOutputStream(ExtractDocument + FileName);
//ZIPファイルからファイルのデータを読込むする
sbyte[] Data = new sbyte[Buffer];
int Count;
while ((Count = ZipIn.read(Data, 0, Buffer)) != -1)
...{
//ディスクへファイルを作成する
Dest.write(Data, 0, Count);
}
//ファイル オブジェクトをオフする
Dest.flush();
Dest.close();
}
//ZIPファイルをオフする
ZipIn.close();
//メッセージを格納する
LastMessage = MsgEmpty;
return true;
}
catch (Exception ex)
...{
//メッセージを格納する
LastMessage = ex.Message;
return false;
}
}
/**//// <summary>
/// 最後のメッセージを取得する
/// </summary>
/// <param name="Document">ドキュメント</param>
/// <remarks>最後のメッセージ</remarks>
public string GetLastMessage()
...{
return LastMessage;
}
#endregion
private int Buffer = 2048;
private string LastMessage = "";
private const string MsgEmpty = "";
private const string MsgNotFoundFile = "ファイルを発見していません";
private const string MsgFileNotExist = "ファイル「{0}」がありません";
private const string MsgZipFileNotExist = "ZIPファイル「{0}」がありません";
/**//// <summary>
/// ファイルを圧縮する
/// </summary>
/// <param name="ZipFile">ZIPファイル</param>
/// <param name="FromDocument">圧縮のドキュメント</param>
/// <returns>
/// true : 圧縮成功
/// false : 圧縮失敗
/// </returns>
/// <remarks></remarks>
public bool AddToFile(string ZipFile, string FromDocument)
...{
try
...{
//ファイルリストを取得する
java.io.File F = new java.io.File(FromDocument);
String[] FileList = F.list();
F = null;
//ファイルリストが空の場合、処理終了
if (FileList == null || FileList.Length == 0)
...{
//メッセージを格納する
LastMessage = MsgNotFoundFile;
return false;
}
//ZIPファイルのパスの判断、なしの場合、このパスを作成する
if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(ZipFile)))
...{
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(ZipFile));
}
//ZIPファイルを作成する
java.io.FileOutputStream Dest = new java.io.FileOutputStream(ZipFile);
java.util.zip.ZipOutputStream ZipOut =
new java.util.zip.ZipOutputStream(new java.io.BufferedOutputStream(Dest));
java.io.BufferedInputStream Origin = null;
sbyte[] Data = new sbyte[Buffer];
string FilePath = null;
java.util.zip.ZipEntry Entry = null;
int Count;
//ZIPファイルへファイルを圧縮する
if (FromDocument.Substring(FromDocument.Length - 1, 1) != java.io.File.separator)
FromDocument += java.io.File.separator;
for (int i = 0; i < FileList.Length; i++)
...{
//ファイルの判断、ファイルが存在ないの場合、処理終了
FilePath = FromDocument + FileList[i];
java.io.File FFile = new java.io.File(FilePath);
if (FFile.exists() == false)
...{
//メッセージを格納する
LastMessage = string.Format(MsgFileNotExist, FilePath);
//ZIPファイルをオフする
ZipOut.close();
//作成したZIPファイルを削除する
java.io.File FZipFile = new java.io.File(ZipFile);
FZipFile.delete();
return false;
}
//ファイルのデータを読込むする
java.io.FileInputStream Fi = new java.io.FileInputStream(FilePath);
Origin = new java.io.BufferedInputStream(Fi, Buffer);
//ZIPファイルへファイルを格納する
Entry = new java.util.zip.ZipEntry(FileList[i]);
ZipOut.putNextEntry(Entry);
while ((Count = Origin.read(Data, 0, Buffer)) != -1)
...{
ZipOut.write(Data, 0, Count);
}
//ファイルをオフする
Origin.close();
}
//ZIPファイルをオフする
ZipOut.close();
//メッセージを格納する
LastMessage = MsgEmpty;
return true;
}
catch (Exception ex)
...{
//メッセージを格納する
LastMessage = ex.Message;
return false;
}
}
/**//// <summary>
/// ファイルを圧縮する
/// </summary>
/// <param name="ZipFile">ZIPファイル</param>
/// <param name="FromFiles">圧縮のファイル</param>
/// <returns>
/// true : 圧縮成功
/// false : 圧縮失敗
/// </returns>
/// <remarks></remarks>
public bool AddToFile(string ZipFile, string[] FromFiles)
...{
try
...{
//圧縮のファイルが空の場合、処理終了
if (FromFiles == null || FromFiles.Length == 0)
...{
//メッセージを格納する
LastMessage = MsgNotFoundFile;
return false;
}
//ZIPファイルのパスの判断、なしの場合、このパスを作成する
if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(ZipFile)))
...{
System.IO.Directory.CreateDirectory(System.IO.Path.GetDirectoryName(ZipFile));
}
//ZIPファイルを作成する
java.io.FileOutputStream Dest = new java.io.FileOutputStream(ZipFile);
java.util.zip.ZipOutputStream ZipOut =
new java.util.zip.ZipOutputStream(new java.io.BufferedOutputStream(Dest));
java.io.BufferedInputStream Origin = null;
sbyte[] Data = new sbyte[Buffer];
java.util.zip.ZipEntry Entry = null;
int Count;
//ZIPファイルへファイルを圧縮する
for (int i = 0; i < FromFiles.Length; i++)
...{
//ファイルの判断、ファイルが存在ないの場合、処理終了
java.io.File FFile = new java.io.File(FromFiles[i]);
if (FFile.exists() == false)
...{
//メッセージを格納する
LastMessage = string.Format(MsgFileNotExist, FromFiles[i]);
//ZIPファイルをオフする
ZipOut.close();
//作成したZIPファイルを削除する
java.io.File FZipFile = new java.io.File(ZipFile);
FZipFile.delete();
return false;
}
//ファイルのデータを読込むする
java.io.FileInputStream Fi = new java.io.FileInputStream(FromFiles[i]);
Origin = new java.io.BufferedInputStream(Fi, Buffer);
//ZIPファイルへファイルを格納する
Entry = new java.util.zip.ZipEntry(FromFiles[i]);
ZipOut.putNextEntry(Entry);
while ((Count = Origin.read(Data, 0, Buffer)) != -1)
...{
ZipOut.write(Data, 0, Count);
}
//ファイルをオフする
Origin.close();
}
//ZIPファイルをオフする
ZipOut.close();
//メッセージを格納する
LastMessage = MsgEmpty;
return true;
}
catch (Exception ex)
...{
//メッセージを格納する
LastMessage = ex.Message;
return false;
}
}
/**//// <summary>
/// ZIPファイルを解凍する
/// </summary>
/// <param name="ZipFile">ZIPファイル</param>
/// <param name="ExtractPath">解凍のドキュメント</param>
/// <returns>
/// true : 解凍成功
/// false : 解凍失敗
/// </returns>
/// <remarks></remarks>
public bool ExtractFile(string ZipFile, string ExtractDocument)
...{
try
...{
//ZIPファイルが存在ないの場合、処理終了
java.io.File FZipFile = new java.io.File(ZipFile);
if (FZipFile.exists() == false)
...{
//メッセージを格納する
LastMessage = string.Format(MsgZipFileNotExist, ZipFile);
return false;
}
FZipFile = null;
//ZIPファイルを読込むする
java.io.FileInputStream Fis = new java.io.FileInputStream(ZipFile);
java.util.zip.ZipInputStream ZipIn =
new java.util.zip.ZipInputStream(new java.io.BufferedInputStream(Fis));
java.util.zip.ZipEntry Entry;
//解凍のパスが存在の場合、このパスを作成する
if (!System.IO.Directory.Exists(ExtractDocument))
...{
System.IO.Directory.CreateDirectory(ExtractDocument);
}
string FileName = null;
//ZIPファイルからファイルの情報を読込むする
if (ExtractDocument.Substring(ExtractDocument.Length - 1, 1) != java.io.File.separator)
ExtractDocument += java.io.File.separator;
while ((Entry = ZipIn.getNextEntry()) != null)
...{
//ZIPファイルの中のファイルの名を取得する
FileName = Entry.getName();
FileName = FileName.Substring(FileName.LastIndexOf(java.io.File.separator) + 1);
//ZIPファイルの中のファイルにより、ファイル オブジェクトを作成する
java.io.FileOutputStream Dest = new java.io.FileOutputStream(ExtractDocument + FileName);
//ZIPファイルからファイルのデータを読込むする
sbyte[] Data = new sbyte[Buffer];
int Count;
while ((Count = ZipIn.read(Data, 0, Buffer)) != -1)
...{
//ディスクへファイルを作成する
Dest.write(Data, 0, Count);
}
//ファイル オブジェクトをオフする
Dest.flush();
Dest.close();
}
//ZIPファイルをオフする
ZipIn.close();
//メッセージを格納する
LastMessage = MsgEmpty;
return true;
}
catch (Exception ex)
...{
//メッセージを格納する
LastMessage = ex.Message;
return false;
}
}
/**//// <summary>
/// 最後のメッセージを取得する
/// </summary>
/// <param name="Document">ドキュメント</param>
/// <remarks>最後のメッセージ</remarks>
public string GetLastMessage()
...{
return LastMessage;
}
#endregion