クラス BmsSaver
- Object
-
- BmsSaver
-
public final class BmsSaver extends Object
BMSコンテンツを外部データへ出力するセーバーです。当クラスではBMSコンテンツの内容を外部データとして出力する機能を提供します。ここで言う「外部データ」とは、 BMSで記述されたテキストデータのことを指します。外部データはファイル等の何らかの形式で記録されていることを 想定しており、Java言語の
InputStream
で読み取ることが出来るもの全てを指します。出力されるデータ 外部データとして出力されるデータには、以下のものが存在します。
- BMS宣言。出力対象のBMSコンテンツにBMS宣言が1件でも存在する場合、外部データの1行目にBMS宣言の一覧を出力します。B
- メタ情報。BMSコンテンツに設定された全てのメタ情報を出力します。メタ情報の値が初期値と同じ場合でも、明示的に
設定されたメタ情報は外部データに出力されます。メタ情報の出力順は
BmsMeta.getOrder()
の値に準拠します。 - チャンネル。BMSコンテンツに記録されたチャンネルのうち、チャンネル番号が
BmsSpec.SPEC_CHANNEL_MIN
~BmsSpec.SPEC_CHANNEL_MAX
のチャンネルを外部データとして出力します。ユーザーチャンネルのデータは出力されません。チャンネルデータの並び順は 小節番号、チャンネル番号で昇順になります。
また、外部データにはコメントを出力することができます。コメントは以下のメソッドで登録出来ます。
メタ情報の先頭:setMetasComment(String...)
チャンネルの先頭:setChannelsComment(String...)
外部データの行末:setFooterComment(String...)
文字コードについて
当クラスで出力する外部データの文字コードは、標準動作ではBmsSpec.getStandardCharset()
の返す文字セットに従います。 この動作を変更したい場合はBmsSpec.setStandardCharset(Charset)
で標準の文字セットを明示的に指定するか、BMSコンテンツの BMS宣言に、使用する文字セットを記述します。例えば、以下のようにBMS宣言を登録すると外部データはUTF-8で出力されます。
bmsContent.addDeclaration
("encoding", "UTF-8");
このBMS宣言を追加したBMSコンテンツは、BMSライブラリで外部データとして出力する限りにおいてはUTF-8でエンコーディング されて出力されます。UTF-8で出力する場合のBOM(Byte Order Mark)について
外部データをUTF-8でエンコーディングする場合において、BOMは付与されません。
-
-
コンストラクタの概要
コンストラクタ コンストラクタ 説明 BmsSaver()
BMSセーバのインスタンスを構築します。
-
メソッドの概要
すべてのメソッド インスタンス・メソッド concreteメソッド 修飾子とタイプ メソッド 説明 void
save(BmsContent content, File dst)
BMSを出力します。void
save(BmsContent content, OutputStream dst)
BMSを出力します。void
save(BmsContent content, String dst)
BMSを出力します。void
save(BmsContent content, Path dst)
BMSを出力します。BmsSaver
setChannelsComment(String... channelsComment)
BmsSaver
setChannelsComment(Collection<String> channelsComment)
チャンネルコメントを設定します。BmsSaver
setFooterComment(String... footerComment)
BmsSaver
setFooterComment(Collection<String> footerComment)
フッターコメントを設定します。BmsSaver
setMetasComment(String... metasComment)
BmsSaver
setMetasComment(Collection<String> metasComment)
メタ情報コメントを設定します。
-
-
-
メソッドの詳細
-
setMetasComment
public BmsSaver setMetasComment(Collection<String> metasComment)
メタ情報コメントを設定します。コメントの内容は1行につき1文字列、複数行記述する場合は複数の文字列をCollectionに設定して渡してください。
文字列中の改行コード<CR>、<LF>は消去したうえで出力されます。
- パラメータ:
metasComment
- メタ情報コメント- 戻り値:
- BMSセーバのインスタンス
- 例外:
NullPointerException
- metasCommentがnull
-
setChannelsComment
public BmsSaver setChannelsComment(Collection<String> channelsComment)
チャンネルコメントを設定します。コメントの内容は1行につき1文字列、複数行記述する場合は複数の文字列をCollectionに設定して渡してください。
文字列中の改行コード<CR>、<LF>は消去したうえで出力されます。
- パラメータ:
channelsComment
- チャンネルコメント- 戻り値:
- BMSセーバのインスタンス
- 例外:
NullPointerException
- channelsCommentがnull
-
setFooterComment
public BmsSaver setFooterComment(Collection<String> footerComment)
フッターコメントを設定します。コメントの内容は1行につき1文字列、複数行記述する場合は複数の文字列をCollectionに設定して渡してください。
文字列中の改行コード<CR>、<LF>は消去したうえで出力されます。
- パラメータ:
footerComment
- フッターコメント- 戻り値:
- BMSセーバのインスタンス
- 例外:
NullPointerException
- footerCommentがnull
-
save
public void save(BmsContent content, String dst) throws BmsException
BMSを出力します。・dstにはBMSファイルのパスを指定します。
上記以外はsave(BmsContent, OutputStream)
と同じです。- パラメータ:
content
- 出力対象のBMSコンテンツdst
- 出力先パス- 例外:
BmsException
- dstがnull: Cause NullPointerExceptionBmsException
-save(BmsContent, OutputStream)
を参照
-
save
public void save(BmsContent content, Path dst) throws BmsException
BMSを出力します。・dstにはBMSファイルのパスを指定します。
上記以外はsave(BmsContent, OutputStream)
と同じです。- パラメータ:
content
- 出力対象のBMSコンテンツdst
- 出力先パス- 例外:
BmsException
- dstがnull: Cause NullPointerExceptionBmsException
-save(BmsContent, OutputStream)
を参照
-
save
public void save(BmsContent content, File dst) throws BmsException
BMSを出力します。・dstにはBMSファイルのパスを指定します。
上記以外はsave(BmsContent, OutputStream)
と同じです。- パラメータ:
content
- 出力対象のBMSコンテンツdst
- 出力先パス- 例外:
BmsException
- dstがnull: Cause NullPointerExceptionBmsException
-save(BmsContent, OutputStream)
を参照
-
save
public void save(BmsContent content, OutputStream dst) throws BmsException
BMSを出力します。dstにはクローズされていない出力可能なストリームを指定してください。出力中のエラーに関しては
OutputStream
の仕様に準拠します。指定BMSコンテンツに1件でもBMS宣言が存在する場合、BMSの先頭行には";?bms"が出力されます。
BMS宣言の"encoding"要素は、出力するBMSの文字セットを表します。この要素の値には文字セットの正規名が 出力されます。一方、文字セットは別名でも指定可能であることから、必ずしもプログラム上で指定した文字セット名が そのまま出力されるとは限りません。
BMS宣言にて"encoding"要素が指定されている場合、その要素の値に記述されている 文字セットを用いてBMSを出力しようとします。
文字セットの名称が未知の場合、BmsExceptionをスローします。
BMSをUTF-8で出力しようとした場合のBOM(Byte Order Mark)は付加されません。
文字セットを指定しない場合、BmsSpec.setStandardCharset(java.nio.charset.Charset)
で指定した文字セットが使用されます。 通常、BMSの標準文字セットはShift-JISです。BMSには、以下の順に各要素が出力されます。
1.BMS宣言(存在する場合のみ)
2.メタ情報コメント(指定した場合のみ)
3.メタ情報
4.チャンネルコメント(指定した場合のみ)
5.チャンネルデータ
6.フッターコメント(指定した場合のみ)- パラメータ:
content
- 出力対象のBMSコンテンツdst
- 出力ストリーム- 例外:
BmsException
- contentがnull: Cause NullPointerExceptionBmsException
- dstがnull: Cause NullPointerExceptionBmsException
- BMS宣言で指定の文字セットが未知BmsException
- BMS出力中にストリームが例外をスローした
-
-