Javaでのディレクトリやファイル操作についてと重要なお知らせ

Java備忘録
スポンサーリンク

Javaでのファイル操作

ディレクトリを作成する

File file = new File("ファイルパス");

if (file.mkdir()) {
System.out.println("ファイルの作成に成功しました");
} else {
System.out.println("ディレクトリの作成に失敗しました。");
}

このようなプログラムを書くことでディレクトリを作成することができます。

ディレクトリを作成するコードの解説

1行目

File file = new File("ファイルパス");

について解説します。

File型のfileという変数を用意します。

ファイルパスという部分には作成したいディレクトリのファイルパスを記載してください。

ファイルパスの指定方法

例えばフォルダの構成が

ディレクトリを作成するjarファイルと同じディレクトリ内にディレクトリを作成する場合は相対パスと言って

File file = new File("test");

というようにファイルパスを指定することができます。

今回の場合だとjarファイルが存在するディレクトリの中に”test”というディレクトリが作成されることになります。

testディレクトリの中に更にディレクトリを作成する場合は

File file = new File("test/test2");

といったふうに指定をすることができます。

上のファイルパスでコードを実行するとtestというディレクトリの中にtest2というディレクトリが作成されることになります。

if文以降の解説
if (file.mkdir()) {
System.out.println("ファイルの作成に成功しました");
} else {
System.out.println("ディレクトリの作成に失敗しました。");
}

まずif文の条件について解説します。

file.mkdir()というのはディレクトリを作成するという関数です。

※正確にはmkdir()という関数

一気にディレクトリを作成する

上記プログラムはディレクトリを”1つずつ”作成するというやり方でした。

今回は”一気に”ディレクトリを作成する方法を紹介します。

File file = new File("test/test2");

このようなファイルパスの指定をすると”test”というディレクトリの中に”test2”というディレクトリを作るというファイルパスの指定になるのですが、この状態で上で記載した方法と同じ方法でコードを書いてしまうと、testというディレクトリがなければディレクトリを作成できないというエラー(IOExpetion)が発生してしまいます。

上のプログラムで作成する場合は

File file = new File("test");
File file_2 = new File("test/test2");

if (file.mkdir()) {
Sysytem.out.println("testディレクトリを作成しました!");
   if (file_2.mkdir()) {
   System.out.println("test2ディレクトリを作成しました!");
   } else {
   System.out.println("test2ディレクトリの作成に失敗しました。");
} else {
System.out.println("testディレクトリの作成に失敗しました。");
  }
}

このようにする必要があります。
1、2個のディレクトリならこれでもいいかもしれませんが10個、20個など、大量にディレクトリを作成する場合はこんなに書いていられないでしょう。

そこで、mkdirs()という関数を使用します。

使い方に関しては上で紹介したmkdir()と変わりません。

File file = new File("test/test2/test3");

のようにディレクトリを作りたかったとするとmkdirs()を使うとこうなります。

File file = new File("test/test2/test3");

if (file.mkdirs()) {
System.out.println("ディレクトリを作成しました。");
} else {
System.out.println("ディレクトリの作成に失敗しました。");
}

このように記述することができます。

このプログラムは”test”というディレクトリの中に”test2”というディレクトリを作成するのと、先程作成された”test2”というディレクトリの中に”test3”というディレクトリを作成するというプログラムになります。

【mkdir()や、mkdirs()の戻り値について】
mkdir()やmkdirs()の戻り値はboolean型になります。
つまり、mkdir()などでディレクトリを作成し、作成に成功すれば”true”
作成に失敗すれば”false”が返ってきます。
そのため、本サイトではif文に条件を入れて成功したか失敗したかを確認していますが、
if文の条件をそのまま記載することも可能です。
if文を記載しなかった場合は成功した場合にこういう処理を、失敗した場合にはこういう処理をということができなくなるのでご注意ください。

ファイルを作成する

今までディレクトリを作成する方法を紹介してきました。

それではファイルを作成する方法を紹介していきます。

例外を処理する(try…catch文)

ファイルを作成するには例外処理を記載しなければなりません。

例外処理を記載しなかった場合、コンパイルエラーが発生してしまいます。

今回ファイルを作成する時に発生する例外は”IOExpetion”という例外になります。

例外が発生する場合の処理を書いていきます。

try {
//通常処理する処理
} catch (IOExpetion e) {
//例外が発生したときの処理
e.printStackTrace();
}

このように処理を書きます。

tryのブロック内に通常処理する内容を記述していきます。

“catch (IOExpetion e) ”

というのはIOExpetionというのを拾い、発生したらIOExpetionをeという変数に代入するという文になります。

“e.printStackTrace()”というのは例外が発生した部分を表示したりする関数になります。

これを書くことによって、どこで例外が発生したかということをエラーで知らせてくれます。

この関数はエラーを出力してくれる関数だと思ってもらえればいいです。

ということでファイルの作成方法を紹介していきます。

ファイルを作成する

上では例外の処理方法を紹介しました。

最初に書きましたが、ファイルを作成するには例外処理を記載しないといけません。

使用する関数は

createNewFile()という関数になります。

ではプログラムを紹介します。

try {
File file = new File("test.txt");
if (file.createNewFile()) {
System.out.println("ファイルの作成に成功しました。");
} else {
System.out.println("ファイルの作成に失敗しました。");
}
} catch (IOExpetion e) {
e.printStackTrace();
}

このようにすることができます。

createNewFileの使い方に関してはmkdirやmkdirsと変わりません。

if文でファイルの作成に成功したか失敗したかを判定することができます。

ファイルパスにはtest.txtというファイルを指定しました。

拡張子を指定しないと毎回開くアプリケーションを選択しないといけなくなるので、指定するのをおすすめします。

ファイルが存在するかを調べる

ファイルが存在するか調べるには”exists”という関数を使用します。

ファイルが存在すればtrue

ファイルが存在しなければfalse

が返ってきます。

こちらは例外を記述する必要がありません。

使い方例を書いていきます。

File file = new File("test/test2/test3/test.txt");
if (file.exists()) {
System.out.println("ファイルが存在します。");
} else {
System.out.println("ファイルが存在しません。");
}

このように使うことができます。

ファイルをコピーする

ファイルをコピーするには例外が発生するので、例外処理を記述します。

ファイルをコピーするには”copy”という関数を使用します。

使い方例です

try {
Path test1 = Paths.get("test1");
Path test2 = Paths.get("test/test2");
Files.copy(test1,test2); 
} catch (IOExpetion e) {
e.printStackTrace();
}

このようになります。

2行目のPaths.get()のかっこの中身にはコピー元となるファイルパスを記載します。

3行目のPaths.get()のカッコの中身にはコピー先となるファイルパスを記載します。

今回の場合はtestというディレクトリの中にtest2というファイル名にしてtest1で指定したコピー元のファイルをコピーするということになります。

4行目のFiles.copy(test1,test2);

というのはファイルをコピーする関数を使用しています。

ここでファイルがコピーされています。

【ディレクトリをコピーすると…】
ディレクトリをコピーすると、ディレクトリはコピーされますが、ディレクトリの中に存在するファイルやディレクトリまではコピーされません。
ディレクトリの中をコピーするにはディレクトリの中にあるファイルの一覧を取得し、ファイルであればそのままコピー、ディレクトリであれば更にそのディレクトリの中にあるファイルの一覧を取得してというのを繰り返す必要があります。

ファイル・ディレクトリを削除する

ファイルやディレクトリを削除するには”delete”関数を使用します。

使い方例です。

File file = new File("test.txt");
if (file.delete()) {
System.out.println("ファイルの削除に成功しました。");
} else {
System.out.println("ファイルの削除に失敗しました。");
}

というふうに削除することができます。

【ディレクトリが削除できない…?】
このdelete関数は1つのファイルしか削除することができません。
ということは、ディレクトリの中にファイルやディレクトリが1つでも存在していると上でのコピーのように1つずつ消していく必要があります。

お知らせ

本サイトでの記載している情報は古い可能性があります。

更新がされると本サイトで紹介している情報が古く、使えなくなったりする可能性があります。

なるべく古くなった場合は更新するようにしますが、更新されていない可能性もありますのでご了承ください。

訂正箇所や間違いがありましたら、コメントを下さると助かります。

この記事を書いた人

Javaなどをメインにプログラムを組んでいるritoです。
CosgyDevで適当に働いてます((
ブログを書きながらサーバープログラムを書いています。
好きなことはパソコンで、ハードオフ巡りが趣味だったりします。

ritoをフォローする
Java備忘録
スポンサーリンク
ritoをフォローする
りとブログ

コメント

タイトルとURLをコピーしました