【Java入門】Fileのコピー方法まとめ

Javaでファイル操作に使用するFileクラスはさまざまな機能があります。

この記事では、ファイル操作で必要な、

  • ファイルをコピーする方法
  • ファイルを削除する方法
  • java.nio.FileChannelクラスを使用してコピーする方法
  • ディレクトリをコピーする方法
  • ファイルの更新日時を変更する方法

などの基本的な内容から、応用的な使い方に関しても解説していきます。

今回はそんなファイルをコピーする方法について、さまざまな方法をわかりやすく解説します!

ファイルをコピーする方法

Javaでファイルをコピーする方法はいくつかありますが、ファイル自体を簡単にコピーできるメソッドは存在しません

ここでは、Java6でファイルをコピーする基本的な方法を2つ解説し、Java7で新しく追加されたファイルのコピー方法についても紹介します。

java.io.Fileクラスを使用してコピーする

ファイルコピーの基本的な方法として、java.io.FileクラスのFileInputStreamクラスと、FileOutputStreamクラスを使用してコピー元のファイルに内容を書き込む方法があります。

FileInputStreamは「import java.io.FileInputStream」、FileOutputStreamは「import java.io.FileOutputStream」のパッケージをインポートします。

以下にJava.io.Fileクラスを使用した、ファイルのコピー方法を記述します。

サンプルでは、FileInputStreamクラスでコピー元のファイルを指定してオブジェクトを生成し、FileOutputStreamクラスでコピー先のファイルを指定してオブジェクトを生成しています。

whileのループでFileInputStreamクラスのreadメソッドで内容を読み込み、FileOutputStreamクラスのwriteメソッドで内容を書き込んでいます。

書き加えられた情報はflushメソッドを使用して、内容を全てファイルに書き込みます。

また、すでにコピー先ファイルが存在する場合は、コピー元ファイルの内容が上書きされます。

java.nio.FileChannelクラスを使用してコピーする

FileChannelクラスのtransferToメソッドを使用することでも、ファイルをコピーすることが可能です。

transferToメソッドは第一引数にコピー開始位置を指定し、第二引数にコピーする最大バイト数を指定します。第三引数には出力先のファイルを指定することで、コピー元ファイルを参照して転送されます。

FileChannelクラスは「import java.nio.channels.FileChannel」をインポートする必要があります。

以下にFileChannelクラスを使用した、ファイルのコピー方法を記述します。

サンプルでは、Fileクラスでコピー元とコピー先ファイルを指定して、オブジェクトを生成します。

次にFileChannelクラスからFileInputStreamクラスとFileOutputStreamクラスのgetChannelメソッドを使用して、ファイルに関連付けられたオブジェクトを生成します。

FileChannelクラスのtransferToメソッドを使用して、コピー先ファイルにコピー元ファイルの内容がコピーされます。

java.nio.file.Filesクラスを使用する

Java7では新しく追加されたjava.nio.file.Filesクラスでは、より簡潔にファイルをコピーすることが可能です。

java.nio.file.Filesクラスでのファイルのコピーは、以下の記事で詳しく解説しています!

ファイルを削除する方法

ファイルを削除するためには、Fileクラスのdeleteメソッドを使用します。

ファイルを削除する方法については、以下の記事で詳しく解説しています!


【Java入門】Fileの削除(delete、強制削除、拡張子の指定)
更新日 : 2017年8月23日

ディレクトリをコピーする方法

ディレクトリのコピーは、Java標準の「JDK」では専用のメソッドが用意されていないため、「commons-io」パッケージをインストールする必要があります。

ディレクトリのコピーは、「commons-io」パッケージのFileUtilsクラスを使用する必要があるため、「import org.apache.commons.io.FileUtils」をインポートします。

「commons-io」のパッケージは、Apache Commonsの以下のサイトからダウンロードできます。
https://commons.apache.org/proper/commons-io/download_io.cgi

以下にcommons-ioを使用した、ディレクトリのコピー方法を記述します。

サンプルでは、Fileクラスでコピー元とコピー先ファイルを指定して、オブジェクトを生成します。

FileUtilsクラスのcopyDirectoryメソッドを使用して、第一引数にコピー元ディレクトリ、第二引数にコピー先ディレクトリのオブジェクトを指定しています。

ファイルの更新日時を変更する方法

ファイルの更新日時を変更する場合は、FileクラスのsetLastModifiedメソッドを使用します。

long型の引数には、変更する時刻を指定します。

以下に更新日時を変更する方法を記述します。

サンプルではFileクラスで対象のファイルを指定し、clearメソッドで一旦内容を初期化しています。

次にCalendarクラスのset関数で変更したい日時を「年,月,日,時,分,秒」で設定し、setLastModifiedのメソッドの引数に指定しています。

これで対象のファイルの更新日時が変更されます。

Fileクラスについてもっと詳しく知りたい方へ

Fileクラスのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、ファイルやディレクトリをコピーする方法や、更新日時の変更方法について説明しました。

Javaでのファイルのコピー処理は、WindowsのコマンドプロンプトやLinuxのターミナルのように、コマンドを1回打ち込むだけで簡単にできるものではありません。

もしファイルをコピーする方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説