2012-03-15 3 views
0

ファイルから入出力を行いたい。私の要件は、Javaストリームクラスを使用することではありません。 私はいくつかの調査を行いましたが、おそらくFileChannelを使用する必要があります。Javaストリームクラスを使用しないJava FileChannelクラス

ただし、Javaストリームクラスを使用せずに特定のファイルのFileChannelオブジェクトを取得するにはどうすればよいですか?

RandomAccessFileを使用していますか? RandomAccessFileクラスを使用することによって、「javaストリームクラスを使用しない」という要件を満たしていますか?

+0

「要件」とは「宿題」を意味しますか? –

+0

はい割り当て! – humansg

答えて

3

InputStream,、またはRandomAccessFileを使用せずにFileChannelにアクセスする方法はありません。

DataOutputは、バイナリストリームからバイトを読み取るためのインタフェースを提供します。だから私はRandomAccessFileもストリームクラスの一種だと信じています。

編集:

私は本当にあなたがストリームクラスとしてクラスを呼び出しているかコンテキストと分かりません。ストリームへの読み書きが非常に抽象的であるため、RandomAccessFileをそのまま使用することができます。非連続的にファイルを読み書きする方法を示します。一般的に

、我々は次のカテゴリにIOストリームを分類..

  • バイトストリームは、生のバイナリデータのI/Oを処理します。

  • 文字ストリームは文字データの入出力を処理し、自動的にローカル文字セットとの変換を処理します。

  • バッファリングされたストリームは、ネイティブAPIへの 呼び出しの数を減らすことによって入出力を最適化します。

  • スキャンと書式設定により、プログラムは書式付きの書式付きの テキストを読み書きできます。

  • コマンドラインのI/Oは、標準ストリームとコンソールオブジェクト について説明しています。

  • データストリームはプリミティブデータ型のバイナリI/Oと文字列 の値を処理します。

  • オブジェクトストリームは、オブジェクトのバイナリ入出力を処理します。

しかし、RandomAccessFileはJDK 7リリース(NIO)で導入されたI/Oメカニズムの下に来る上記categories.Itのいずれにも属していません。それは、チャネルI/Oの下にあり、ストリームI/Oではなくなります。したがって、RandomAccessFileを使用してください。

+0

@KadneにはJavaのストリームクラスを使用せずにI/Oを行う方法がありますか?私は、難しさがJNIを使​​うまではないと思います。 – humansg

+0

@humansg:上記の私の編集を参照してください –

0

ストリームが許可されていない場合は、JNIを使​​用します。

関連する問題