|
LHA Library for Java | ||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjp.gr.java_conf.dangan.util.lha.LhaHeader
LHAヘッダを扱う。
このクラスは java.util.zip パッケージでは ZipEntry と近いが、
ヘッダの入出力のためのユーティリティ関数を持つ点が違う。
このクラスは set系メソッドで為された方が良いチェックを
getBytes() 時に行うように書かれている。その点は注意すること。
-- revision history -- $Log: LhaHeader.java,v $ Revision 1.2.2.3 2005/05/03 07:50:30 dangan [bug fix] exportLevel1Header() で skip size のチェックがされていなかった。 Revision 1.2.2.2 2005/02/02 00:57:46 dangan [bug fix] importLevelXHeader(byte[], String) でファイルサイズを int で読み込んでいたため 31ビット値以上のサイズのファイルを正しく扱えていなかったのを修正。 Revision 1.2.2.1 2003/07/20 13:19:21 dangan [bug fix] exportDirNameExtHeader(String) で System.arraycopy の src と dest の配置が間違っていた。 Revision 1.2 2002/12/08 00:00:00 dangan [maintenance] LhaConstants から CompressMethod へのクラス名の変更に合わせて修正。 Revision 1.1 2002/12/05 00:00:00 dangan [improvement] 64ビットファイルサイズヘッダに対応。 [change] LhaUtil.DefaultEncoding から LhaProperty.encoding を使用するように変更。 getNextHeaderData() を getFirstHeaderData() に名前変更。 新しい getNextHeaderData() は呼び出された位置で ヘッダを発見できない場合 null を返す。 LhaHeader を拡張したサブクラスを使用する人のための createInstance() を追加。 Revision 1.0 2002/08/05 00:00:00 dangan add to version control [bug fix] setDate( null ) を許していた。 setCompressMethod( null ) を許していた。 exportLevel2,3Header で Date が 32bit の time_t の範囲外の値(負の値を含む)の場合を許していた。 [change] exportHeader で ヘッダレベルが 0,1,2,3 のいずれでもない場合 IllegalStateException を投げるように変更。 [maintenance] ソース整備 タブ廃止 ライセンス文の修正
フィールドの概要 | |
static int |
NO_CRC
CRC値が無い事を意味する値。 |
static int |
UNKNOWN
不明を意味する値。 |
コンストラクタの概要 | |
LhaHeader(byte[] HeaderData)
ヘッダデータから 新しい LhaHeader の インスタンスを生成する。 |
|
LhaHeader(byte[] HeaderData,
String encode)
ヘッダデータから 新しい LhaHeader の インスタンスを生成する。 |
|
LhaHeader(String path)
path という名前を持つ LhaHeader のインスタンスを生成する。 |
|
LhaHeader(String path,
Date date)
path という名前を持ち、最終更新日時が date の LhaHeader のインスタンスを生成する。 |
メソッドの概要 | |
static boolean |
checkHeaderData(byte[] HeaderData)
ヘッダデータが正当であるかをチェックする。 |
Object |
clone()
このオブジェクトのコピーを作成して返す。 |
static LhaHeader |
createInstance(byte[] HeaderData,
Properties property)
property の キー"lha.header" に結び付けられた生成式を使用して HeaderData から LhaHeader のインスタンスを生成する。 |
protected byte[][] |
exportExtendHeaders(String encode)
拡張ヘッダをバイト配列の形にして出力する。 |
byte[] |
getBytes()
このLhaHeaderのデータを使用して ヘッダデータを生成し、 それをバイト配列の形で得る。 |
byte[] |
getBytes(String encode)
このLhaHeaderのデータを使用して ヘッダデータを生成し、 それをバイト配列の形で得る。 |
long |
getCompressedSize()
データの圧縮後のサイズを得る。 |
String |
getCompressMethod()
データを圧縮した方法を識別する文字列を得る。 |
int |
getCRC()
データのCRC16値を得る。 |
protected byte[] |
getExtraData()
レベル 0 ヘッダ、 レベル 1 ヘッダの時に 付加される可能性がある基本ヘッダ内の拡張データを得る。 |
static byte[] |
getFirstHeaderData(InputStream in)
入力ストリームから 最初のヘッダを読み込む。 |
int |
getHeaderLevel()
このヘッダのヘッダレベルを得る。 |
Date |
getLastModified()
データの最終更新日時を得る。 |
protected byte |
getLevel0DosAttribute()
レベル 0 ヘッダに記される DOS のファイル属性を得る。 |
static byte[] |
getNextHeaderData(InputStream in)
入力ストリームから 次のヘッダを読み込む。 |
long |
getOriginalSize()
データの圧縮前のサイズを得る。 |
byte |
getOSID()
このヘッダを作成した OS の識別子を得る。 |
String |
getPath()
データの名前、 もしくはデータがファイルであった場合のパス名を得る。 |
protected void |
importExtendHeader(byte[] HeaderData,
int index,
int length,
String encode)
拡張ヘッダを読み込む。 |
void |
setCompressedSize(long size)
圧縮後データサイズを設定する。 |
void |
setCompressMethod(String method)
圧縮法文字列を設定する。 |
void |
setCRC(int crc)
圧縮前のデータの CRC16値を設定する。 |
protected void |
setExtraData(byte[] data)
レベル 0,1ヘッダ時に使用される 基本ヘッダ内 拡張情報を設定する。 |
void |
setHeaderLevel(int level)
ヘッダレベルを設定する。 |
void |
setLastModified(Date date)
圧縮データの最終更新日時を設定する。 |
protected void |
setLevel0DosAttribute(byte attribute)
レベル 0ヘッダの場合に出力される、 MS-DOS のファイル属性を設定する。 |
void |
setOriginalSize(long size)
圧縮前データサイズを設定する。 |
void |
setOSID(byte id)
このヘッダにOS固有の情報が含まれる場合、 そのデータを解釈する手がかりとして OSの識別子を設定する。 |
void |
setPath(String path)
データの名前、もしくはデータがファイルである場合、 データのパスを設定する。 |
クラス java.lang.Object から継承したメソッド |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
public static final int UNKNOWN
public static final int NO_CRC
コンストラクタの詳細 |
public LhaHeader(String path)
path
- パス名
IllgelArgumentException
- path が null か 空文字列のいずれかである場合public LhaHeader(String path, Date date)
path
- パス名date
- 最終更新日時
IllgelArgumentException
- path が null か 空文字列のいずれかであるか、
date が nullである場合。public LhaHeader(byte[] HeaderData)
HeaderData
- ヘッダデータ
IndexOutOfBoundsException
- ヘッダデータが壊れているため
データがあると仮定した位置が
HeaderData の範囲外になった
IllegalArgumentException
- ヘッダレベルが 0,1,2,3 の何れでもないか、
HeaderData が null の場合public LhaHeader(byte[] HeaderData, String encode) throws UnsupportedEncodingException
HeaderData
- ヘッダデータencode
- 文字列情報を解釈する際に使用する
エンコード
IndexOutOfBoundsException
- ヘッダデータが壊れているため
データがあると仮定した位置が
HeaderData の範囲外になった
UnsupportedEncodingException
- encode で指定されたエンコードが
サポートされない場合
IllegalArgumentException
- ヘッダレベルが 0,1,2,3 の何れでもないか、
HeaderData が null の場合メソッドの詳細 |
public Object clone()
public String getCompressMethod()
public long getOriginalSize()
UNKNOWN
public long getCompressedSize()
UNKNOWN
public Date getLastModified()
public int getHeaderLevel()
public String getPath()
File.separator
public int getCRC()
UNKNOWN
,
NO_CRC
public byte getOSID()
protected byte[] getExtraData()
protected byte getLevel0DosAttribute()
public byte[] getBytes()
IllegalStateException
- public byte[] getBytes(String encode) throws UnsupportedEncodingException
encode
- 文字列情報を出力する際に使用する
エンコード
IllegalStateException
- UnsupportedEncodingException
- encode で指定されたエンコードが
サポートされない場合public void setCompressMethod(String method)
method
- 圧縮法文字列
IllegalArgumentException
- 圧縮法文字列が '-' で始まっていないか、
'-' で終わっていない場合。public void setOriginalSize(long size)
size
- 圧縮前データサイズ
IllegalArgumentException
- size に LhaHeader.UNKNOWN( -1 )を設定しようとした場合UNKNOWN
public void setCompressedSize(long size)
size
- 圧縮後データサイズ
IllegalArgumentException
- size に LhaHeader.UNKNOWN を設定しようとしたUNKNOWN
public void setLastModified(Date date)
date
- 最終更新日時
IllegalArgumentException
- date に null を設定しようとした場合public void setHeaderLevel(int level)
level
- ヘッダレベルpublic void setPath(String path)
path
- データの名前、もしくはファイル名
IllegalArgumentException
- path が空文字列である場合File.separator
public void setCRC(int crc)
crc
- データの圧縮前のCRC16値
IllegalArgumentException
- crc に LhaHeader.UNKNOWN を設定しようとしたUNKNOWN
,
NO_CRC
public void setOSID(byte id)
id
- OS識別子protected void setExtraData(byte[] data)
data
- 拡張情報
拡張情報を出力しない場合は nullを設定する。protected void setLevel0DosAttribute(byte attribute)
attribute
- MS-DOSのファイル属性protected void importExtendHeader(byte[] HeaderData, int index, int length, String encode) throws UnsupportedEncodingException
HeaderData
- ヘッダデータindex
- HeaderData内の拡張ヘッダの開始位置length
- 拡張ヘッダの長さencode
- 文字列情報を解釈する際に使用する
エンコード
UnsupportedEncodingException
- encode で指定されたエンコードが
サポートされない場合protected byte[][] exportExtendHeaders(String encode) throws UnsupportedEncodingException
encode
- 文字列情報を出力する際に使用する
エンコード
UnsupportedEncodingException
- encode で指定されたエンコードが
サポートされない場合public static boolean checkHeaderData(byte[] HeaderData)
HeaderData
- ヘッダデータをバイト配列に格納したもの
public static byte[] getFirstHeaderData(InputStream in) throws IOException
in
- ヘッダデータを読み込む入力ストリーム
ストリームは mark/resetのサポートを必要とする。
IOException
- 入出力エラーが発生した場合
IllegalArgumentException
- in が mark/resetをサポートしない場合public static byte[] getNextHeaderData(InputStream in) throws IOException
in
- ヘッダデータを読み込む入力ストリーム
ストリームは mark/resetのサポートを必要とする。
IOException
- 入出力エラーが発生した場合
IllegalArgumentException
- in が mark/resetをサポートしない場合public static LhaHeader createInstance(byte[] HeaderData, Properties property)
HeaderData
- ヘッダのデータを持つバイト配列property
- LhaProperty.parse() で LhaHeader のインスタンスが生成できるような
生成式を キー"lha.header" の値として持つプロパティ
|
LHA Library for Java | ||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |