D88File
クラス D88File

java.lang.Object
  拡張D88File.D88File

public class D88File
extends java.lang.Object

D88ファイルのパス情報と関連付けを行い、そのファイルに対して
リスト情報取得および内部ディスクの展開・更新・削除・追加・並び替えを行う。
(上記の機能を、D88のDISK操作機能という。)

また、D88の各イメージ内のファイルのリスト情報および展開する機能もある。
(この機能を、D88のFILE操作機能という。)

現在指定しているD88ファイルのファイル名・ディレクトリ名も取得でき、
いわば Fileクラスの D88版ともいうべきもの(クラスの継承はしていない)。

基本的に、D88ファイルが不正だったり読みこみが出来ない場合はエラーとなるが、
ファイルが存在しない場合、大きさが0であり書込み可能であるファイルが
指定された場合は、新規作成とみなしファイルの作成を行う。

ただし、D88File.class SDK Ver. 0.05 現在については
DISK操作機能のうち、DISKの削除・追加・並び替え、およびD88ファイルの新規作成は行えない。

関連項目:
DiskResultSet, FileResultSet

コンストラクタの概要
D88File(java.io.File fileD88, int intBackupFlag)
          Fileオブジェクトからの生成用コンストラクタ.
D88File(java.lang.String strD88Path, int intBackupFlag)
          パス情報をString指定で生成するためのコンストラクタ.
 
メソッドの概要
 boolean dumpData(int intDiskNumber, int intTrackNumber, int intSectorNumber, int intSeekPointer, int intDumpSize, boolean blnFewTracks)
          D88ファイル内のデータをバイナリ形式でダンプする.
 boolean dumpData(java.lang.String strDiskNumber, java.lang.String strTrackNumber, java.lang.String strSectorNumber, java.lang.String strSeekPointer, java.lang.String strDumpSize, boolean blnFewTracks)
          D88ファイル内のデータをバイナリ形式でダンプする.
 DiskResultSet extractDisk(int[] intDiskNumbers)
          D88ファイルの内部ディスクを単体に展開する.
 DiskResultSet extractDisk(java.lang.String strNumRange)
          D88ファイルの内部ディスクを単体に展開する.
 FileResultSet extractFile(int intDiskNumber, int[] intFileNumbers, boolean blnCut4Header)
          D88の内部ファイルを展開する.
 FileResultSet extractFile(int intDiskNumber, java.lang.String strFileNumRange, boolean blnCut4Header)
          D88の内部ファイルを展開する.
 FileResultSet extractFile(java.lang.String strDiskNumRange, java.lang.String strFileNumRange, boolean blnCut4Header)
          D88の内部ファイルを展開する.
 java.lang.String getClassName()
          クラスファイル名を取得する.
 java.lang.String getCopyright()
          著作権情報を取得する.
 java.lang.String getD88FilePath()
          D88ファイルの絶対パス情報を取得する.
 java.lang.String getEncoding()
          内部ディスク名・内部ファイル名の表示に使用する文字エンコードを取得する.
 java.lang.String getErrMsg()
          簡易エラー情報を取得する.
 java.lang.String getVersion()
          バージョン情報を取得する.
 boolean isValid()
          このD88ファイルが有効なものかどうかを判断する.
 DiskResultSet listDisk()
          D88の内部ディスク情報を取得する.
 FileResultSet listFile(int intDiskNumber)
          D88の内部ファイル情報を取得する.
 FileResultSet listFile(java.lang.String strNumRange)
          D88の内部ファイル情報を取得する.
 DiskResultSet updateDisk(int[] intDiskNumbers, int intType, java.lang.String strNewDiskName)
          D88ファイルの内部ディスクに更新を加える.
 DiskResultSet updateDisk(java.lang.String strNumRange, int intType, java.lang.String strNewDiskName)
          D88ファイルの内部ディスクに更新を加える.
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

D88File

public D88File(java.io.File fileD88,
               int intBackupFlag)
Fileオブジェクトからの生成用コンストラクタ.

パラメータ:
fileD88 - D88ファイルを示すfileオブジェクト
intBackupFlag - 更新時のD88ファイルバックアップ有無を指定する。(0.04では強制で1)
            0: 更新時にバックアップの作成をしない
            1: 更新時にバックアップ作成を実施、rollback不可
            2: 更新時にバックアップ作成を実施、rollback可能

D88File

public D88File(java.lang.String strD88Path,
               int intBackupFlag)
パス情報をString指定で生成するためのコンストラクタ.

パラメータ:
strD88Path - D88ファイルを絶対パスまたは相対パスで指定する。
intBackupFlag - 更新時のD88ファイルバックアップ有無を指定する。(0.04では強制で1)
            0: 更新時にバックアップの作成をしない
            1: 更新時にバックアップ作成を実施、rollback不可
            2: 更新時にバックアップ作成を実施、rollback可能
メソッドの詳細

getVersion

public java.lang.String getVersion()
バージョン情報を取得する.

戻り値:
バージョン情報のString。形式は [ x.xx ]

getCopyright

public java.lang.String getCopyright()
著作権情報を取得する.

戻り値:
著作権情報のString。形式は [ Copyright (C) 著作者 , 西暦-西暦]

getClassName

public java.lang.String getClassName()
クラスファイル名を取得する.

戻り値:
クラスファイル名称のString。[ D88File.class ] 固定

isValid

public boolean isValid()
このD88ファイルが有効なものかどうかを判断する.

このメソッドによって、true が返るD88Fileオブジェクトのみ、
各D88のDISK/FILE操作メソッドを使用することができる。
(ただし、FILE操作は D88File.class で判別可能なものに限る。)
false が返る場合は、各D88操作メソッドでは必ずエラーとなる。
エラー原因については、getErrMsg にてString メッセージ形式で取得可能。

戻り値:
指定されたD88ファイルが有効であれば true。そうでなければ false。

getErrMsg

public java.lang.String getErrMsg()
簡易エラー情報を取得する.

D88Fileクラスの生成時、もしくは各メソッド使用時にエラーが発生したときに、
エラーの簡易理由についてString形式で取得する。

戻り値:
簡易エラーメッセージ(String)

getEncoding

public java.lang.String getEncoding()
内部ディスク名・内部ファイル名の表示に使用する文字エンコードを取得する.

内部ディスク名・内部ファイル名は MS932 として判別するが、
i18n(国際化)非対応等の理由により MS932 が使用できない場合は
JDK/JREのデフォルトエンコーディングが使用される(OS依存)が、
仕様上望ましくない。

文字エンコードが MS932 でない場合はディスク名リネームにおいて、
英数字・記号以外の文字(例えば全角や半角カナ)は _ に置き換えられる。
また、内部ファイル操作では、ファイル名に半角カナ等が
使用されている場合は _ に置き換えて表示される。 内部ファイル抽出時は全てバイナリ形式のみ可能となり、
Basicテキスト変換・N88のマシン語ヘッダ削除は行えない。

戻り値:
内部ディスク名・内部ファイル名の表示で使用するエンコーディング(String)

getD88FilePath

public java.lang.String getD88FilePath()
D88ファイルの絶対パス情報を取得する.

戻り値:
D88ファイルの絶対パス情報(String)

listDisk

public DiskResultSet listDisk()
D88の内部ディスク情報を取得する.

内部ディスクの情報は、DiskResultSet に順番に格納される。

戻り値:
DiskResultSetオブジェクト。
エラーの場合は DiskResultSet.getMaxRows で 0 以下となる。

extractDisk

public DiskResultSet extractDisk(java.lang.String strNumRange)
D88ファイルの内部ディスクを単体に展開する.

展開した単体D88ファイルは、D88ファイルと同一ディレクトリに、
[ Filebody_Nn.filter ] という名前で作成される。
また、D88ファイルに Filter がない場合は D88がフィルタとなる。
(例: YS1.D88 の2番目ディスクを展開: YS1_02.D88、YS2 の 3番目のディスクを展開: YS2_03.D88 )

展開結果については DiskResultSet に格納される。

パラメータ:
strNumRange - 何番目のディスクを単体抽出するか指定する。
            0: 全てのディスクを展開
            D1-D2: D1番目からD2番目のディスクを展開
            D1,D2,..,Dx: D1番目・D2番目..Dx番目のディスクを展開
            ただし、1<=Dn<=64 で、昇順で指定する
戻り値:
DiskResultSetオブジェクト。
エラーの場合は DiskResultSet.getMaxRows で 0 以下となる。

extractDisk

public DiskResultSet extractDisk(int[] intDiskNumbers)
D88ファイルの内部ディスクを単体に展開する.

展開した単体D88ファイルは、D88ファイルと同一ディレクトリに、
[ Filebody_Nn.filter ] という名前で作成される。
また、D88ファイルに Filter がない場合は D88がフィルタとなる。
(例: YS1.D88 の2番目ディスクを展開: YS1_02.D88、YS2 の 3番目のディスクを展開: YS2_03.D88 )

展開結果については DiskResultSet に格納される。

パラメータ:
intDiskNumbers - 何番目のディスクを抽出するか指定する。
            内部ディスク番号を配列で指定する。
            配列内のディスク番号は必ず昇順でなければならない。
戻り値:
DiskResultSetオブジェクト。
エラーの場合は DiskResultSet.getMaxRows で 0 以下となる。

updateDisk

public DiskResultSet updateDisk(java.lang.String strNumRange,
                                int intType,
                                java.lang.String strNewDiskName)
D88ファイルの内部ディスクに更新を加える.

更新操作とは、ライトプロテクトのON/OFF、ディスク名のリネームのことを示す。
コンストラクタにて intBackupFlag にてバックアップを作成するようにした場合、
D88ファイルと同一ディレクトリに、[ Filename.backup.YYYYMMDDHHMISS ] という
名称で操作前のバックアップが作成される。
(例: YS1.D88 を2004/02/28 18:15:20 で操作:YS1.D88.backup.20040228181520 )

操作結果については DiskResultSet に格納される。

パラメータ:
strNumRange - 何番目のディスクを操作対象とするか指定する。
          [ライトプロテクトON/OFFの場合]
            0: 全てのディスクを対象とする。
            D1-D2: D1番目からD2番目のディスクを対象とする。
            D1,D2,..,Dx: D1番目・D2番目..Dx番目のディスクを対象とする。
            ただし、1<=Dn<=64 で、昇順で指定する
          [ディスク名リネームの場合]
            D1: D1番目のディスクを対象とする。
            ただし、1<=Dn<=64 とする
intType - 操作種類を指定する。
            0: ライトプロテクトの解除
            1: ライトプロテクトを設定
            2: ディスクのリネーム
strNewDiskName - 新しいディスク名を指定する。
            文字列を16バイトで指定する。
            ライトプロテクト操作時は参照しないため、NULL セットする。
戻り値:
DiskResultSetオブジェクト。
エラーの場合は DiskResultSet.getMaxRows で 0 以下となる。

updateDisk

public DiskResultSet updateDisk(int[] intDiskNumbers,
                                int intType,
                                java.lang.String strNewDiskName)
D88ファイルの内部ディスクに更新を加える.

更新操作とは、ライトプロテクトのON/OFF、ディスク名のリネームのことを示す。
コンストラクタにて intBackupFlag にてバックアップを作成するようにした場合、
D88ファイルと同一ディレクトリに、[ Filename.backup.YYYYMMDDHHMISS ] という
名称で操作前のバックアップが作成される。
(例: YS1.D88 を2004/02/28 18:15:20 で操作:YS1.D88.backup.20040228181520 )

操作結果については DiskResultSet に格納される。

パラメータ:
intDiskNumbers - 何番目のディスクを操作するか指定する。
            内部ディスク番号を配列で指定する。
            配列内のディスク番号は必ず昇順でなければならない。
            リネームの場合は先頭の配列のみ処理を行う。
intType - 操作種類を指定する。
            0: ライトプロテクトの解除
            1: ライトプロテクトを設定
            2: ディスクのリネーム
strNewDiskName - 新しいディスク名を指定する。
            文字列を16バイトで指定する。
            ライトプロテクト操作時は参照しないため、NULL セットする。
戻り値:
DiskResultSetオブジェクト。
エラーの場合は DiskResultSet.getMaxRows で 0 以下となる。

listFile

public FileResultSet listFile(java.lang.String strNumRange)
D88の内部ファイル情報を取得する.

内部ファイルの情報は、FileResultSet に順番に格納される。
対象ディスクの DiskResultSet.getDiskFormat が 1以上の場合に有効なメソッド。
未対応フォーマット時は FileResultSet.getMaxRows が 0 となる。

パラメータ:
strNumRange - 何番目のディスクの内部ファイルをリスト取得対象とするか指定する。
            D1: D1番目の内部ファイルをリスト取得
            ただし、1<=Dn<=64。
戻り値:
FileResultSetオブジェクト。
エラーの場合は FileResultSet.getMaxRows で 0 以下となる。
関連項目:
DiskResultSet

listFile

public FileResultSet listFile(int intDiskNumber)
D88の内部ファイル情報を取得する.

内部ファイルの情報は、FileResultSet に順番に格納される。
対象ディスクの DiskResultSet.getDiskFormat が 1以上の場合に有効なメソッド。
未対応フォーマット時は FileResultSet.getMaxRows が 0 となる。

パラメータ:
intDiskNumber - どのディスクの内部ファイルをリスト取得対象とするか指定する。
            内部ディスク番号を指定する。
戻り値:
FileResultSetオブジェクト。
エラーの場合は FileResultSet.getMaxRows で 0 以下となる。
関連項目:
DiskResultSet

extractFile

public FileResultSet extractFile(java.lang.String strDiskNumRange,
                                 java.lang.String strFileNumRange,
                                 boolean blnCut4Header)
D88の内部ファイルを展開する.
対象ディスクの DiskResultSet.getDiskFormat が 1以上の場合に有効なメソッド。
未対応フォーマット時は FileResultSet.getMaxRows が 0 となる。

blnCut4Header を true 指定した場合、BASIC中間コードのテキスト変換の実施と、
N88 DISK BASIC・Micro Disk Basic のオブジェクトファイル(バイナリ、マシン語)
のヘッダ4バイトおよびEndAddress以降の無効データを切り捨てる。

blnCut4Header が false 指定では、N88 DISK BASIC・Micro Disk Basicの場合
セクタ単位でReadした結果がそのままファイル化される。
(Magical-DOS・Frost-DOSはファイルサイズまでで切り捨て)

なお、ASCIIファイルは、N88 DISK BASIC・Micro Disk Basicの場合は
セクタ単位のReadデータを、Magical-DOS、Frost-DOSではファイルサイズまでで
切り捨てされたデータをそのままファイル化する。(0x1A以降のデータもファイル化する)

展開した内部ファイルは、D88ファイルと同一ディレクトリに、
Nn ディレクトリを作成した上で、そのディレクトリへ展開される。
(Nnは、内部ディスクの番号)
展開結果については FileResultSet に格納される。

パラメータ:
strDiskNumRange - 何番目のディスクを展開対象とするか指定する。
            D1: D1番目の内部ファイルをリスト取得
            ただし、1<=Dn<=64。
strFileNumRange - 何番目のファイルを展開対象とするか指定する。
            0: 全ての内部ファイルを展開する
            F1-F2: F1番目からD2番目の内部ファイルを展開する
            F1,F2,..,Fx: F1番目・F2番目..Fx番目の内部ファイルを展開する
            ただし、1<=Fn<=256 で、昇順で指定する
blnCut4Header - ファイル取得時にヘッダ4バイト削除、BASICテキスト変換を行うか
         getEncoding が MS932 以外の時 true を指定すると、エラーが発生する。
            true: ヘッダ削除、BASICのASCII変換を実施して取得
            false: ヘッダ削除,BASIC変換せず、全ファイルをバイナリのまま取得
戻り値:
FileResultSetオブジェクト。
エラーの場合は FileResultSet.getMaxRows で 0 以下となる。
関連項目:
DiskResultSet

extractFile

public FileResultSet extractFile(int intDiskNumber,
                                 java.lang.String strFileNumRange,
                                 boolean blnCut4Header)
D88の内部ファイルを展開する.
対象ディスクの DiskResultSet.getDiskFormat が 1以上の場合に有効なメソッド。
未対応フォーマット時は FileResultSet.getMaxRows が 0 となる。

blnCut4Header を true 指定した場合、BASIC中間コードのテキスト変換の実施と、
N88 DISK BASIC・Micro Disk Basic のオブジェクトファイル(バイナリ、マシン語)
のヘッダ4バイトおよびEndAddress以降の無効データを切り捨てる。

blnCut4Header が false 指定では、N88 DISK BASIC・Micro Disk Basicの場合
セクタ単位でReadした結果がそのままファイル化される。
(Magical-DOS・Frost-DOSはファイルサイズまでで切り捨て)

なお、ASCIIファイルは、N88 DISK BASIC・Micro Disk Basicの場合は
セクタ単位のReadデータを、Magical-DOS、Frost-DOSではファイルサイズまでで
切り捨てされたデータをそのままファイル化する。(0x1A以降のデータもファイル化する)

展開した内部ファイルは、D88ファイルと同一ディレクトリに、
Nn ディレクトリを作成した上で、そのディレクトリへ展開される。
(Nnは、内部ディスクの番号)
展開結果については FileResultSet に格納される。

パラメータ:
intDiskNumber - ディスクを抽出取得対象とするか指定する。
            内部ディスク番号を指定する。
strFileNumRange - 何番目のファイルを展開対象とするか指定する。
            0: 全ての内部ファイルを展開する
            F1-F2: F1番目からD2番目の内部ファイルを展開する
            F1,F2,..,Fx: F1番目・F2番目..Fx番目の内部ファイルを展開する
            ただし、1<=Fn<=256 で、昇順で指定する
blnCut4Header - ファイル取得時にヘッダ4バイト削除、BASICテキスト変換を行うか
         getEncoding が MS932 以外の時 true を指定すると、エラーが発生する。
            true: ヘッダ削除、BASICのASCII変換を実施して取得
            false: ヘッダ削除,BASIC変換せず、全ファイルをバイナリのまま取得
戻り値:
FileResultSetオブジェクト。
エラーの場合は FileResultSet.getMaxRows で 0 以下となる。
関連項目:
DiskResultSet

extractFile

public FileResultSet extractFile(int intDiskNumber,
                                 int[] intFileNumbers,
                                 boolean blnCut4Header)
D88の内部ファイルを展開する.
対象ディスクの DiskResultSet.getDiskFormat が 1以上の場合に有効なメソッド。
未対応フォーマット時は FileResultSet.getMaxRows が 0 となる。

blnCut4Header を true 指定した場合、BASIC中間コードのテキスト変換の実施と、
N88 DISK BASIC・Micro Disk Basic のオブジェクトファイル(バイナリ、マシン語)
のヘッダ4バイトおよびEndAddress以降の無効データを切り捨てる。

blnCut4Header が false 指定では、N88 DISK BASIC・Micro Disk Basicの場合
セクタ単位でReadした結果がそのままファイル化される。
(Magical-DOS・Frost-DOSはファイルサイズまでで切り捨て)

なお、ASCIIファイルは、N88 DISK BASIC・Micro Disk Basicの場合は
セクタ単位のReadデータを、Magical-DOS、Frost-DOSではファイルサイズまでで
切り捨てされたデータをそのままファイル化する。(0x1A以降のデータもファイル化する)

展開した内部ファイルは、D88ファイルと同一ディレクトリに、
Nn ディレクトリを作成した上で、そのディレクトリへ展開される。
(Nnは、内部ディスクの番号)
展開結果については FileResultSet に格納される。

パラメータ:
intDiskNumber - ディスクを抽出取得対象とするか指定する。
            内部ディスク番号を指定する。
intFileNumbers - 何番目のディスクを抽出するか指定する。
            内部ファイル番号を配列で指定する。
            配列内のファイル番号は必ず昇順でなければならない。
blnCut4Header - ファイル取得時にヘッダ4バイト削除、BASICテキスト変換を行うか
         getEncoding が MS932 以外の時 true を指定すると、エラーが発生する。
            true: ヘッダ削除、BASICのASCII変換を実施して取得
            false: ヘッダ削除,BASIC変換せず、全ファイルをバイナリのまま取得
戻り値:
FileResultSetオブジェクト。
エラーの場合は FileResultSet.getMaxRows で 0 以下となる。
関連項目:
DiskResultSet

dumpData

public boolean dumpData(java.lang.String strDiskNumber,
                        java.lang.String strTrackNumber,
                        java.lang.String strSectorNumber,
                        java.lang.String strSeekPointer,
                        java.lang.String strDumpSize,
                        boolean blnFewTracks)
D88ファイル内のデータをバイナリ形式でダンプする.
ダンプしたいデータのある ディスク番号、トラック番号、セクタ番号、
セクタ内ダンプ開始位置、そこから取得する合計ファイルサイズを指定する。

blnFewTracks を true 指定した場合、指定したファイルサイズ分のデータを
取得し終わるまで、次トラック以降も読み込みしてダンプする。
そのディスクの最終トラックまで読み込んでも指定したファイルサイズ
に満たない場合はエラー終了する。
blnFewTracks が false 指定では、指定したトラックの最終セクタまで
読み込んでも指定したファイルサイズに満たない場合はエラー終了する。

なお、ダンプデータは D88ファイルと同一ディレクトリに、
[ Filebody_DMP.DMP ] という名前で作成される。
(例: YS1.D88 のダンプデータなら、YS1_DMP.DMP、
YS2 のダンプデータなら YS2_DMP.DMP )

パラメータ:
strDiskNumber - 何番目のディスクをダンプするか指定する。
            内部ディスク番号を指定する。
strTrackNumber - ダンプする開始トラック番号を指定する。
            ディスクの先頭トラック番号は 0 とする。
strSectorNumber - ダンプする開始セクタ番号を指定する。
            トラックの先頭セクタ番号は 1 とする。
strSeekPointer - セクタ内のどの位置からダンプを開始するか指定する。
            セクタの先頭位置は 0 とし、
            ダンプ開始位置をバイト単位で指定する。
            セクタのバイト長以上を指定した場合はエラーとなる。
strDumpSize - ダンプデータのファイルサイズをバイト単位で指定する。
blnFewTracks - 複数トラックに跨ったダンプ取得を許可するかどうか
            true: 複数トラックのダンプ取得を許可する
            false: 複数トラックのダンプ取得を許可しない
戻り値:
指定されたファイルサイズ分のダンプデータが取得できれば true。
そうでなければ false。

dumpData

public boolean dumpData(int intDiskNumber,
                        int intTrackNumber,
                        int intSectorNumber,
                        int intSeekPointer,
                        int intDumpSize,
                        boolean blnFewTracks)
D88ファイル内のデータをバイナリ形式でダンプする.
ダンプしたいデータのある ディスク番号、トラック番号、セクタ番号、
セクタ内ダンプ開始位置、そこから取得する合計ファイルサイズを指定する。

blnFewTracks を true 指定した場合、指定したファイルサイズ分のデータを
取得し終わるまで、次トラック以降も読み込みしてダンプする。
そのディスクの最終トラックまで読み込んでも指定したファイルサイズ
に満たない場合はエラー終了する。
blnFewTracks が false 指定では、指定したトラックの最終セクタまで
読み込んでも指定したファイルサイズに満たない場合はエラー終了する。

なお、ダンプデータは D88ファイルと同一ディレクトリに、
[ Filebody_DMP.DMP ] という名前で作成される。
(例: YS1.D88 のダンプデータなら、YS1_DMP.DMP、
YS2 のダンプデータなら YS2_DMP.DMP )

パラメータ:
intDiskNumber - 何番目のディスクをダンプするか指定する。
            内部ディスク番号を指定する。
intTrackNumber - ダンプする開始トラック番号を指定する。
            ディスクの先頭トラック番号は 0 とする。
intSectorNumber - ダンプする開始セクタ番号を指定する。
            トラックの先頭セクタ番号は 1 とする。
intSeekPointer - セクタ内のどの位置からダンプを開始するか指定する。
            セクタの先頭位置は 0 とし、
            ダンプ開始位置をバイト単位で指定する。
            セクタのバイト長以上を指定した場合はエラーとなる。
intDumpSize - ダンプデータのファイルサイズをバイト単位で指定する。
blnFewTracks - 複数トラックに跨ったダンプ取得を許可するかどうか
            true: 複数トラックのダンプ取得を許可する
            false: 複数トラックのダンプ取得を許可しない
戻り値:
指定されたファイルサイズ分のダンプデータが取得できれば true。
そうでなければ false。