• ベストアンサー

ファイルコピーについて(初心者です)

JAVAには、あるファイルを別のディレクトリにコピーや移動するクラスはあるのでしょうか? それとも、一旦メモリに読み出して、所望のディレクトリに同じ名前で書き出すしかないのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

移動は java.io.File#renameTo(File f) でできます。このメソッドはディレクトリが違っていればそこに移動します (UNIX系OSの mv コマンドや rename() 関数、Windows での move コマンドとほぼ同じです)。 コピーの方法は、まずコピー元を FileInputStream で開き、コピー先を FileOutputStream で開きます。次にそれぞれのインスタンスについて getChannel() を行って FileChannel のインスタンスを取り出します。最後に FileInputStream から取り出した FileChannel のインスタンスに対して transferTo() を使って FileOutputStream から取り出した FileChannel のインスタンスを指定すれば内容が全てコピーされます。あとは close() して終わり。

tg627
質問者

お礼

詳しい説明どうもありがとうございました。

tg627
質問者

補足

原理としては、 ファイルの内容を一旦読み出して吐き出すのではなく、 ファイルのプロパティを変更するということでしょうか? この場合、コピー処理時間は発生しないのですよね?

その他の回答 (1)

noname#18558
noname#18558
回答No.1

標準APIにはありません。 Jakarta commonsのIOライブラリには、そういう実装があります。

参考URL:
http://jakarta.apache.org/commons/io/api-release/org/apache/commons/io/FileUtils.html
tg627
質問者

お礼

やはり、標準のAPIにはないのですね。 Jakarta commonsというものを知らないので、調べてみます。 ありがとうございました。

関連するQ&A

専門家に質問してみよう