【Java】ファイルの存在確認、フォルダ作成、削除

2018年3月11日

本稿は、ファイルクラスについて説明します。

Fileクラスとは、ファイルのパスに関する情報を扱います。

また、ファイルかフォルダか判定したり、フォルダの中身を取得することもできます。

ゲームでは、セーブデータの存在確認やフォルダがなければ自動生成するなど、いろいろ使いどころはあります。

そんなFileクラスの機能で使う可能性がある機能のみを紹介します。

※ファイルの移動、コピー、削除などの操作をする場合は比較的新しいAPIであるFilesクラスを推奨します。多少難易度が上がりますが、こちらのほうが信頼度の高い処理となります。Filesクラスでの移動、コピー、削除等の一部の操作はこちらの記事で説明しています。

コンストラクタの指定方法

Fileクラスのコンストラクタにはnew File(フォルダ名/ファイル名)のような形で指定できます。

絶対パス指定と相対パス指定ができますが、相対パス指定で記述した場合はJavaの実行パスからの相対パスとなります。

これを踏まえて、以降のメソッドの実行サンプルを見てみましょう。

getNameメソッド

Fileオブジェクトの示すファイル名、フォルダ名を取得します。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File file = new File("folder/test.txt");
		System.out.println(file.getName());
	}
}
実行結果

test.txt

getAbsolutePathメソッド

Fileオブジェクトの示す絶対パス指定文字列を取得します。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File file = new File("folder/test.txt");
		System.out.println(file.getAbsolutePath());
	}
}
実行結果

C:\Users\ユーザー名\Desktop\Web関連\Javaテスト\folder\test.txt

isDirectoryメソッド

Fileオブジェクトの示す場所がフォルダかどうか判定します。

実行フォルダに、test.txtファイルとtestフォルダを作成します。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File f1 = new File("test.txt");
		System.out.println(f1.isDirectory());
		
		File f2 = new File("test");
		System.out.println(f2.isDirectory());
	}
}
実行結果

false
true

testのほうはtrueが取得できました。

isFileメソッド

Fileオブジェクトの示す場所がファイルかどうか判定します。

実行フォルダに、test.txtファイルとtestフォルダを作成します。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File f1 = new File("test.txt");
		System.out.println(f1.isFile());
		
		File f2 = new File("test");
		System.out.println(f2.isFile());
	}
}
実行結果

true
false

test.txtのほうはtrueが取得できました。

existsメソッド

Fileオブジェクトの示す場所にファイル、またはフォルダが存在するか確認します。

実行フォルダに、test.txtファイルを作成します。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File f1 = new File("test.txt");
		System.out.println(f1.exists());
		
		File f2 = new File("test1.txt");
		System.out.println(f2.exists());
	}
}

test.txtは存在するのでtreですが、test1.txtファイルはないのでfalseになりました。

実行結果

true
false

listFilesメソッド

Fileオブジェクトの示す場所のフォルダの中身のファイルとフォルダをFile配列で全取得します。

まずは、testフォルダを作成します。

その中に、適当なファイルを入れて試します。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File f1 = new File("test");
		File[] list = f1.listFiles();
		for ( File f : list ) {
			System.out.println(f.getName());
		}
	}
}
実行結果

その他
僕.txt
画像.jpg
私.txt

フォルダの中身をファイル名、フォルダ名で表示することができました。

mkdirメソッド

Fileオブジェクトの示す場所にフォルダを作成します。

試しにやっほいフォルダを作成してみます。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File f1 = new File("やっほい");
		f1.mkdir();
	}
}
実行結果

やっほいフォルダが作成されましたね。

deleteメソッド

Fileオブジェクトの示す場所のファイルまたはフォルダを削除します。

やっほいフォルダを削除してみます。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File f1 = new File("やっほい");
		f1.delete();
	}
}
実行結果

やっほいフォルダが削除されましたね。

renameToメソッド

ファイルまたはフォルダを移動したり、名前変更したりできます。

テスト.txtファイルをやっほいフォルダに移動してみます。

import java.io.File;

public class Test{
	public static void main(String[] args){
		File src = new File("テスト.txt");
		File dest = new File("やっほい/テスト.txt");
		src.renameTo(dest);
	}
}
実行結果

先ほどあった、テスト.txtファイルがなくなりました。

やっほいフォルダの中身

ちゃんと移動されているようです。

Java

Posted by nompor