Java - New I/O


■ページ目次

Top

■New I/O

Top
■API
Top

■バッファー

Top
■Buffer クラスのメソッド
Top
■バッファーへのアクセス
Top

■チャネル

Top
■FileChannel クラスのメソッド
Top
■ストリームからのチャネル獲得
Top
■例題
  1. バッファーを利用してファイルをコピーするアプリケーション"NewIO01.java"を作成し、実行してください。コピー元ファイル名、コピー先ファイル名は、コマンドラインから指定します。
    1. import java.io.*;
    2. import java.nio.*;
    3. import java.nio.channels.*;
    4. public class NewIO01 {
    5. public static void main(String[] args) {
    6. File f = null;
    7. ByteBuffer bb = null;
    8. FileChannel fci = null;
    9. FileChannel fco = null;
    10. try {
    11. f = new File(args[0]);
    12. fci = new FileInputStream(f).getChannel();
    13. fco = new FileOutputStream(args[1]).getChannel();
    14. bb = ByteBuffer.allocate((int)f.length()); // 入力ファイルの大きさ分のバッファの割り当て
    15. printProperty(bb, "割当て後");
    16. fci.read(bb); // 入力
    17. printProperty(bb, "入力後");
    18. bb.flip(); // フリップ
    19. printProperty(bb, "フリップ後");
    20. fco.write(bb); // 出力
    21. printProperty(bb, "出力後");
    22. fco.close();
    23. fci.close();
    24. } catch (Exception e) {
    25. e.printStackTrace();
    26. }
    27. }
    28. private static void printProperty(ByteBuffer bb, String msg) {
    29. System.out.println("* " + msg);
    30. System.out.print(" position = " + bb.position());
    31. System.out.print(" limit = " + bb.limit());
    32. System.out.print(" capacity = " + bb.capacity());
    33. System.out.println();
    34. }
    35. }

    □ 実行結果

    $ java NewIO01 NewIO01.java NewIO01.java.txt
    * 割当て後
      position = 0  limit = 1406  capacity = 1406
    * 入力後
      position = 1406  limit = 1406  capacity = 1406
    * フリップ後
      position = 0  limit = 1406  capacity = 1406
    * 出力後
      position = 1406  limit = 1406  capacity = 1406
    
Top
■実習
Top

inserted by FC2 system