JavaでFileのcopyを行う方法3選|コードのサンプル

- システム
エンジニア - JavaでFileのcopyを行う方法が知りたいです。
- プロジェクト
マネージャー - JavaでFileのcopyを行うための事前準備などを解説しますので、一緒に学びましょう。
JavaでFileのcopyを行う方法3選
こちらの記事ではJavaでFileのcopyを行う方法を解説いたします。JavaのバージョンによってFileをcopyする方法が異なりますので、バージョンに応じて複数のやり方を説明いたします。
Java10以降でFileのcopyを行う方法
まずはJava10以降の環境でFileのcopyを行う方法を解説します。Java10ではReaderクラスにtransferToというメソッドが追加されたので、このメソッドを使ってFileのcopyを行います。
事前準備
実際にコーディングを行うための事前準備を行います。以下のようなフォルダ構成でJavaのプロジェクトを作成しておいてください。
1
2
3
4
5
6
7
8
9
10
11
|
SampleProject/
├── file/
│ ├── source/
│ │ └── sample.txt
│ └── target/
│ └── (フォルダの中身は空)
└── src/
├── main/
└── SampleMain.java
|
sample.txtは、任意の文字列が記載されたテキストファイルを用意してください。SampleMain.javaに関しては今後の解説でコーディングをおこなっていきますので、中身は空で問題ありません。
コードのサンプル
Sample.javaを以下の通りコーディングしてください。その後、Javaアプリケーションの実行を行うと、source配下のsample.txtのFileがtarget配下にcopyされます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package main;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
public class SampleMain {
public static void main(String[] args) {
Path sourceFilePath = Paths.get("file/source/sample.txt");
Path targetFilePath = Paths.get("file/target/sample.txt");
BufferedReader reader;
BufferedWriter writer;
try {
reader = new BufferedReader(new FileReader(sourceFilePath.toFile()));
writer = new BufferedWriter(new FileWriter(targetFilePath.toFile()));
reader.transferTo(writer);
} catch (IOException e) {
e.printStackTrace();
}
}
}
|
Java9以降でFileのcopyを行う方法
次にはJava9以降の環境でFileのcopyを行う方法を解説します。Java9ではInputStreamクラスにtransferToというメソッドが追加されました。このメソッドは読み込んだ全てのデータをOutputStreamに書き込むメソッドです。
事前準備
「Java10以降でFileのcopyを行う方法」の事前準備と同じプロジェクトを用意してください。main.javaの実装を行っていきます。コードのサンプルを混ぜて説明します。
コードのサンプル
Sample.javaを以下の通りコーディングしてください。その後、Javaアプリケーションの実行を行うと、source配下のsample.txtのFileがtarget配下にcopyされます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
package main;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
public class SampleMain {
public static void main(String[] args) {
Path sourceFilePath = Paths.get("file/source/sample.txt");
Path targetFilePath = Paths.get("file/target/sample.txt");
InputStream inputStream = null;
OutputStream outStream = null;
try {
inputStream = new FileInputStream(sourceFilePath.toFile());
outStream = new FileOutputStream(targetFilePath.toFile());
inputStream.transferTo(outStream);
} catch (IOException e) {
e.printStackTrace();
}
}
}
|
Java7以降でFileのcopyを行う方法
次にはJava7以降の環境でFileのcopyを行う方法を解説します。Java7ではFilesクラスにcopyというメソッドが追加されました。このメソッドを使ってcopyを行います。
事前準備
「Java10以降でFileのcopyを行う方法」の事前準備と同じプロジェクトを用意してください。main.javaの実装を行っていきます。コードのサンプルを混ぜて説明します。
コードのサンプル
Sample.javaを以下の通りコーディングしてください。その後、Javaアプリケーションの実行を行うと、source配下のsample.txtのFileがtarget配下にcopyされます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
package main;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class SampleMain {
public static void main(String[] args) {
Path sourceFilePath = Paths.get("file/source/sample.txt");
Path targetFilePath = Paths.get("file/target/sample.txt");
try {
Files.copy(sourceFilePath,
targetFilePath,
StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
e.printStackTrace();
}
}
}
|
- システム
エンジニア - JavaでFileのcopyを行う方法やサンプルコードなどが理解できました。
- プロジェクト
マネージャー - 事前準備やサンプルコードを参考に、ご自身で実際に指定してみましょう。
Javaのバージョンに合わせて適切な記述を
こちらの記事ではJavaのバージョン別で、Fileをcopyする方法を3つ紹介しました。Javaでは似たようなメソッドが存在していたり、ある目的を達成するために複数の手段が存在していたりします。
File操作を行う際は、こちらの記事を参考に適切な方法を検討してみてください。Javaのバージョンによって実装されているメソッドが異なるので、実行環境には注意しましょう。
FEnetJava・Javaコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


Java新着案件New Job
-
官公庁向け業務システム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給39万~44万円東京都千代田区(永田町駅) -
販売管理システム開発/Java/東京都中央区/【WEB面談可】/テレワーク
月給49万~55万円東京都中央区(京橋駅) -
生命保険会社向けシステム開発/Java/東京都千代田区/【WEB面談可】/テレワーク
月給42万~48万円東京都千代田区(大手町駅) -
社会保険システムのパッケージ開発/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(新橋駅) -
金融機関向けシステム更改/Java/東京都江東区/【WEB面談可】/テレワーク
月給46万~51万円東京都江東区(豊洲駅) -
大手通信会社者向けWebシステム改修/Java/東京都港区/【WEB面談可】/テレワーク
月給42万~48万円東京都港区(品川駅)