「Java8」try-with-resourcesでファイルをコピーするサンプル

環境
JavaSE 1.8
Eclipse 4.14.0

構文
try (InputStream inputStream = new FileInputStream(変数名1);
OutputStream outputStream = new FileOutputStream(変数名2)) {
処理コード}
try-with-resources文は、1つ以上のリソースを宣言するtry文です。

finallyブロックでcloseメソッドを呼び出さなくても自動でcloseをしてくれるようになります。
close処理内で例外が発生してもtry文の中の例外がスローされます。
try-with-resources文は、文の終わりで各リソースが確実に閉じられるようにします。

使用例

package com.arkgame.study;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileCopyResDemo {

      public static void main(String[] args) throws IOException {
            String strA = "C:\\src\\45.txt";
            String strB = "C:\\dest\\67.txt";
            fileCopy(strA, strB);
      }

      /**
       * ファイルコピーを行う関数
       * 
       * @param srcFile  コピー元ファイル
       * @param destFile コピー先ファイル
       * @throws IOException
       */
      protected static void fileCopy(String srcFile, String destFile) throws IOException {
            try (InputStream inputStream = new FileInputStream(srcFile);
                        OutputStream outputStream = new FileOutputStream(destFile)) {
                  byte[] buffer = new byte[250];
                  int num;
                  while ((num = inputStream.read(buffer)) >= 0) {
                        outputStream.write(buffer, 0, num);
                  }
            }
            System.out.println("ファイルをコピーしました。");
      }
}

実行結果:ファイル「45.txt」の内容を「67.txt」にコピーしました。

Java

Posted by arkgame