イオの流れの一種類:
パッケージcom.cxy.ssp.Automic; 輸入java.io.FileOutputStreamは、 インポートにjava.io.IOException; インポートたjava.nio.ByteBuffer; 輸入java.nio.channels.FileChannelの。 輸入java.util.concurrent.CyclicBarrier。 輸入java.util.concurrent.atomic.AtomicReferenceFieldUpdater。 輸入java.util.concurrent.atomic.AtomicStampedReference。 // 通过NIO实现文件IO パブリック クラスDemo3 { 公共 静的 ボイドメイン(文字列[]引数)がスロー例外{ // 1创建输出流 たFileOutputStreamたFileOutputStream = 新たFileOutputStream(" bas.txt " )。
//建設チャンネル のFileChannelチャンネル = fileOutputStream.getChannel();
//バッファ作成し たByteBufferバッファ = ByteBuffer.allocate(1024 ); // 文字列STR = " Hello Worldの" ;
バッファに//データ buffer.put( str.getBytes()); 試み{
//タグバッファが空にされる必要がある、次に操作 buffer.flip();
//チャネルの内容書き込み channel.write(バッファ); } キャッチ(IOExceptionをE){ E .printStackTrace(); } fileOutputStream.close(); } }
com.cxy.ssp.Automicパッケージ; インポートjava.io.FileInputStream; インポートjava.nio.ByteBufferの,; インポートjava.nio.channels.FileChannelの、 パブリック クラスDemo4 { 公共 静的 ボイドメイン(文字列[]引数)が例外を{スロー / / 第一、入力ストリームを構築する のFileInputStreamのFileInputStream = 新しい新規のFileInputStream(" bas.txt " ); //は、捕捉チャネルを通って流れる のFileChannelチャネル= fileInputStream.getChannel(); // のキャッシュ領域準備 のByteBufferバッファー= ByteBuffer.allocate(1024 )。 //内部チャネルからデータを読み込みます。バイトデータ channel.read(バッファ); // の内容印刷 システム。OUT .println(新しい新しい文字列(buffer.array())); // 閉じる fileInputStream.close(); } }
パッケージcom.cxy.ssp.Automic; 輸入java.io.FileInputStream; 輸入java.io.FileOutputStreamは、 輸入java.nio.channels.FileChannelの。 パブリック クラスDemo5 { 公共 静的 ボイドメイン(文字列[]引数)は例外{スロー のFileInputStream FileInputStreamの = 新しい FileInputStreamを(" bas.txtを" )。 FileOutputStreamのFileOutputStream = 新しいのFileOutputStream(" B.TXT " ); FileChannelチャネル = fileInputStream.getChannel()。 FileChannelのチャネル1= fileOutputStream.getChannel()。 channel1.transferFrom(チャンネル0 、channel.size())。 channel1.close(); channel.close(); } }
アイデア:最初の入力または出力ストリームを構築し、その後、出力または入力フローセットアップチャネル、channle
バッファを作成し、操作、チャネル・バッファゾーンを運営
上記のコードの概要:
事故への1つの入力と出力され、コンピュータとの観点から、コンピュータの出力は、出力され、コンピュータが入力され、
バッファ内に置くために必要なデータ・バイトの2出力ストリーム、
3つの入力ストリーム:データは、データを読み取ることが可能な唯一のチャネル次いで、バッファ中に置かれる必要はありません