「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文です。

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

使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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("ファイルをコピーしました。");
}
}
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("ファイルをコピーしました。"); } }
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