2008年8月1日金曜日

FileChannelクラスのことは、知ってるの?

1、特徴
このクラスは、バイトチャネルに対する一般的な操作 (読み込み、書き込み、
クローズ) のほかに、
次のようなファイル固有の操作を定義します。

◆バイトの読み込みや書き込みは、チャネルの現在位置に影響を及ぼす
ことなく、
ファイル内の絶対位置で行われる

◆ファイルの領域はメモリに直接マッピングされる。ファイルのサイズが
大きい場合は、通常の
read メソッドやwrite メソッドを呼び出すより、この
方法のほうが効率的


◆ファイルの更新は、基準となる記憶装置に強制書き出しされる。
したがって、システムが
クラッシュしてもデータの損失は回避される

◆バイトはファイルからその他のチャネルへ転送できる。反対に、
その他のチャネルから
転送することもできる。多くのオペレーティング
システムをファイルシステムのキャッシュ
と直接接続し、データを非常
に速い速度で送受信することにより、この転送を最適化できる


◆ファイルの領域は、その他のプログラムからアクセスできないよう
にロックできる


2.メソッド:
このクラスは、既存のファイルを開くメソッドや新しいファイルを作成する
メソッドは
定義しません。これらのメソッドは、将来のリリースで追加される
可能性があります。
このたびのリリースでファイルチャネルを取得したい
場合は、既存の FileInputStream、
FileOutputStream、RandomAccessFile の
いずれかのオブジェクトの getChannel メソッドを
呼び出します。こうすること
により、基準となる同じファイルに接続されたファイルチャネルが

返されます。

3.ファイルチャネルの状態:
ファイルチャネルの状態は、チャネルを返した getChannel メソッドを持つ
オブジェクトの状態
と密接な関係にあります。たとえば、チャネルの位置を
明示的に、あるいはバイトの読み込みや
書き込みによって変更すると、
発生元のオブジェクトのファイル位置が変わります (逆も同様)。
ファイル
チャネルからファイルの長さを変更すると、発生元オブジェクトから見た
ときの長さが
変わります (逆も同様)。バイトの書き込みによってファイル
のコンテンツを変更すると、
元のオブジェクトから見たときのコンテンツが
変わります (逆も同様)。


4.読み書きインスタンス:
このクラスは、さまざまな点で、「読み込み可能」、「書き込み可能」または
「読み込みと
書き込みが可能」であるインスタンスが必要なことを条件
として指定します。FileInputStream
インスタンスの getChannel メソッドで取得
したチャネルは読み込み可能です。FileOutputStream
インスタンスの
getChannel メソッドで取得したチャネルは書き込み可能です。そして、
RandomAccessFile インスタンスの getChannel メソッドで取得した
チャネルは、インスタンスが
モード "r" で作成されている場合は
読み込み可能、モード "rw"で作成されている場合は読み込み

書き込みが可能です。


5.チャネルのオーペンとクローズ:
チャネルの状態はオープンまたはクローズです。作成時はオープンですが、
クローズするとクローズ
したままになります。チャネルがクローズしている
状態で入力操作を行おうとすると、
ClosedChannelException がスローされ
ます。チャネルがオープンしているかどうかは isOpen
メソッドの呼び出し
によって判断できます。


===========補足===============
1.FileChannelの親インタフェース:
public interface Channel:
入出力操作に関係するチャネルです。
2.チャネルの定義:
チャネルは、ハードウェアデバイス、ファイル、ネットワークソケットのほか、
個別の入出力操作
(読み込み、書き込みなど) を実行できるプログラム
コンポーネントなどのエンティティへの
オープン接続を表します。

やっと終わった^^^^^

0 件のコメント: