JavaでFileクラスを使ってファイルやディレクトリ(フォルダ)を操作する方法について説明します。

Fileクラスはjava.ioパッケージに含まれており、ファイルやディレクトリの作成、ファイルの読み書き、ディレクトリ内のファイルリストの取得など、基本的なファイルシステムの操作を提供しています。

まず、Fileクラスのインスタンスを作成する方法から説明しましょう。

Fileクラスの主なメソッド1

以下のコードはFileオブジェクトを作成して、それを使って以下の操作を行う基本的な例です。

  1. mydirという名前の新しいディレクトリをプロジェクトの直下に作成します。もし既に存在する場合は作成をスキップします。
  2. mydirディレクトリ内にfile1.txtfile2.txtfile3.txtの3つのテキストファイルを作成し、それぞれに"これはテストファイル[n]です。"という内容を書き込みます。
  3. 作成したディレクトリのファイルリストをコンソールに表示します。
  4. ユーザーにファイル名を入力してもらい、そのファイルが存在し実際にファイルであることを確認した後、Windowsのメモ帳アプリケーション(notepad)を使用して開きます。
  5. ユーザーが存在しないファイル名を入力した場合、またはファイルではない場合は、その旨をユーザーに通知します。

Javaでファイル操作を行う際は、例外処理を適切に行うことが重要です。

例えば、ファイルの作成や削除は、セキュリティの問題やファイルシステムの状態によって失敗する可能性があります。

そのため、これらの操作を行うメソッドはIOExceptionをスローする可能性があるため、try-catchブロックを使用して例外を処理する必要があります。

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		// ディレクトリを作成
		File dir = new File("mydir");
		if (!dir.exists()) {
			if (dir.mkdir()) {
				System.out.println("ディレクトリを作成しました。");
			} else {
				System.out.println("ディレクトリの作成に失敗しました。");
				return;
			}
		}

		// テキストファイルを作成して文字列を書き込む
		try {
			for (int i = 1; i <= 3; i++) {
				File file = new File(dir, "file" + i + ".txt");
				FileWriter writer = new FileWriter(file);
				writer.write("これはテストファイル" + i + "です。");
				writer.close();
				System.out.println(file.getName() + "を作成しました。");
			}
		} catch (IOException e) {
			System.out.println("ファイルの書き込みに失敗しました。");
			e.printStackTrace();
			return;
		}

		// ディレクトリ内のファイルリストを取得して表示する
		if (dir.isDirectory()) {
			String[] files = dir.list();
			for (String f : files) {
				System.out.println(f);
			}
		}

		// ユーザーにファイル名の入力を求め、そのファイルを開く
		Scanner scanner = new Scanner(System.in);
		System.out.print("開きたいファイル名を入力してください: ");
		String input = scanner.nextLine();
		File fileToOpen = new File(dir, input);
		if (fileToOpen.exists() && fileToOpen.isFile()) {
			try {
				// Windowsのnotepadを使用してファイルを開く
				Runtime.getRuntime().exec(new String[] { "notepad.exe", fileToOpen.getPath() });
				System.out.println(input + "をメモ帳で開きます。");
			} catch (IOException e) {
				System.out.println("ファイルを開く際にエラーが発生しました。");
				e.printStackTrace();
			}
		} else {
			System.out.println(input + "は存在しないか、ファイルではありません。");
		}
		scanner.close();
	}
}

Fileクラスの主なメソッド2

このプログラムの内容は以下の通りです。

  1. newfile.txtという新しいファイルをカレントディレクトリに作成します。すでにファイルが存在する場合は、その旨を出力します。
  2. 作成したファイルの絶対パス、サイズ(バイト単位)、最終更新日時をコンソールに表示します。
  3. 最後に、ファイルを削除します。成功した場合はファイルが削除されたことを、失敗した場合は削除に失敗したことを出力します。

例外が発生した場合は、そのエラーメッセージとスタックトレースを表示します。

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FileOperationsExample {
    public static void main(String[] args) {
        try {
            // 新しいファイルを作成
            File myFile = new File("newfile.txt");
            if (myFile.createNewFile()) {
                System.out.println("ファイルが作成されました: " + myFile.getName());
            } else {
                System.out.println("ファイルは既に存在します。");
            }

            // ファイルの情報を取得して表示
            System.out.println("絶対パス: " + myFile.getAbsolutePath());
            System.out.println("ファイルサイズ: " + myFile.length() + "バイト");

            long lastModified = myFile.lastModified();
            String formattedDate = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date(lastModified));
            System.out.println("最終更新日時: " + formattedDate);

            // ファイルを削除
            if (myFile.delete()) {
                System.out.println("ファイルが削除されました: " + myFile.getName());
            } else {
                System.out.println("ファイルの削除に失敗しました。");
            }

        } catch (IOException e) {
            System.out.println("エラーが発生しました。");
            e.printStackTrace();
        }
    }
}

より詳しいFileクラスの情報はリンク先のAPIを御覧下さい。

最後までお読みいただきありがとうございます。