トッカンソフトウェア

Java ファイル操作


今回はファイル操作をやります。ファイル、フォルダの存在チェック、作成、コピー、削除、名前変更などです。


サンプル①

以下のサンプルでは、ファイルが存在する確認し、存在する場合は別フォルダにコピー、さらに名前変更(移動)を行っています。
				
package test;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileTest {
	public static void main(String[] args) {
		try {
			String path = "C:\\work\\test.txt";
			String dirPath = "C:\\work\\New";

			File file = new File(path);

			// ファイルが存在するか確認
			if (file.exists()) {

				File dir = new File(dirPath);

				// フォルダが存在するか確認
				if (!dir.exists()) {

					// フォルダを作成
					dir.mkdirs();
				}

				// パスを連結
				Path filePath = Paths.get(dirPath, "testNew.txt");
				// Paths.getの引数は一つでも良い
				// Path filePath = Paths.get("C:\\work\\New\\testNew.txt");

				// Java11から Path.of が使えるようになり今後はこちらの方が良い 
				// Path filePath = Path.of(dirPath, "testNew.txt");

				// ファイルをコピー
				Files.copy(file.toPath(), filePath);

				Path filePathTo = Paths.get(dirPath, "testNew2.txt");
				File fileFrom = new File(filePath.toString());
				File fileTo = new File(filePathTo.toString());
				if (fileTo.exists()) {

					// ファイルを削除
					fileTo.delete();
				}

				// ファイルを名前変更(移動)
				fileFrom.renameTo(fileTo);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


			

ファイル、フォルダの存在チェック

				
	File file = new File(パスの文字列);

	// ファイルが存在するか確認
	if (file.exists()) {

		// ファイルが存在した場合の処理
	}

			

パスの連結

C#のPath.Combineにあたるものが欲しかったのですが、Java1.7から出来るようになっていました。
Paths.getでパスを連結します。
				
	// パスを連結
	Path filePath = Paths.get(パス文字列①, パス文字列②);

			

ファイルコピー

ファイルコピーはFiles.copyで実行します。これもJava1.7で出来るようになりました。
				
	// ファイルをコピー
	Files.copy(Pathオブジェクトコピー元, Pathオブジェクトコピー先);

			

名前変更(ファイル移動)

名前変更(ファイル移動)はファイルオブジェクトのrenameToメソッドで行います。
				
	// ファイルを名前変更(移動)
	Fileオブジェクト移動元.renameTo(Fileオブジェクト移動先);

			

ファイル、フォルダ削除

ファイル、フォルダ削除はファイルオブジェクトのdeleteメソッドで行います。フォルダの中身は空にする必要があります。
				
	// ファイルを削除
	Fileオブジェクト.delete();

			

サンプル②

以下のサンプルでは、フォルダ内のフォルダ・ファイル一覧を取得しています。
				
package test;

import java.io.File;

public class FileTest {
	public static void main(String[] args) {
		String dirPath = "C:\\work";

		File dir = new File(dirPath);

		// フォルダが存在するか確認
		if (dir.exists()) {

			// フォルダ、ファイルの一覧を取得
			File[] files = dir.listFiles();
			for (File file : files) {

				// フォルダの場合
				if (file.isDirectory()) {
					System.out.println("Dir:" + file.getName());
				}

				// ファイルの場合
				else if (file.isFile()) {
					System.out.println("File:" + file.getName());
				}
			}

		}
	}
}


			
指定フォルダ配下にある全ファイルを再帰的に取得するサンプル

package test;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileTest {

	public static void main(String[] args) {

		File dir = new File("C:\\work\\a");

		try {

			List<String> ary = getPathList(dir);

			for (String str : ary) {

				System.out.println(str);
			}
		} catch (IOException e) {

			e.printStackTrace();
		}
	}

	// 指定フォルダ配下にある全ファイルを再帰的に取得
	public static List<String> getPathList(File dir) throws IOException {

		List<String> ret = new ArrayList<>();

		// フォルダ、ファイルの一覧を取得
		File[] files = dir.listFiles();

		for (File file : files) {

			if (file.isDirectory()) {

				ret.addAll(getPathList(file));
			} else {

				ret.add(file.getAbsolutePath());

			}
		}

		return ret;
	}
}

フォルダ、ファイルの一覧を取得

フォルダ、ファイルの一覧取得はファイルオブジェクトのlistFilesメソッドで行います。
				
	// フォルダ、ファイルの一覧を取得
	File[] files = ファイルオブジェクト.listFiles();

			

フォルダ、ファイルの確認

フォルダ、ファイルの確認はファイルオブジェクトのisDirectoryメソッド、isFileメソッドで行います。
				
	// フォルダの場合
	if (ファイルオブジェクト.isDirectory()) {

	}

	// ファイルの場合
	if (ファイルオブジェクト.isFile()) {

	}

			

サンプル③

フルパス、親フォルダ、ファイル名、拡張子を取得するサンプル
				
package test;

import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;

public class FileTest {
	public static void main(String[] args) {

		String fullPath = "C:\\work\\test.txt";

		File f = new File(fullPath);

		// フルパス → C:\work\test.txt
		System.out.println(f.getPath());
		// 親フォルダ → C:\work
		System.out.println(f.getParent());
		// ファイル名 → test.txt
		System.out.println(f.getName());

		String name = f.getName();
		// ファイル名(拡張子なし) → test
		System.out.println(name.substring(0, name.lastIndexOf('.')));
		// 拡張子 → txt
		System.out.println(name.substring(name.lastIndexOf('.') + 1).toLowerCase());

		Path p = Paths.get(fullPath);
		// フルパス → C:\work\test.txt
		System.out.println(p);
		// 親フォルダ → C:\work
		System.out.println(p.getParent());
		// ファイル名 → test.txt
		System.out.println(p.getFileName());
	}
}


			



ページのトップへ戻る