Java java.ioパッケージ Fileクラス

JavaのFileクラスの変数、コンストラクタ、メソッド、ファイルとディレクトリ情報を扱う例

Fileクラスは、入出力に必要なファイルおよびディレクトリに関する情報を扱えます。Fileクラスには、ファイルとディレクトリのアクセス権限、作成時刻、最終更新日、サイズ、パスなどの情報を取得するメソッドがあり、新しいファイルやディレクトリの作成、削除、名前変更などの操作メソッドもあります。

Fileクラスの変数

変数 説明
pathSeparator パス区切り文字(Windows: “;”, LinuxおよびUNIX系: “:")
separator ファイル名区切り文字(Windows: “", LinuxおよびUNIX系: “/")

Javaは前述のとおり、プラットフォームに依存しません。一度コンパイルすればOSに関係なく動作するため、各OSに応じて異なる動作が必要になる場合があります。ファイルはOSごとにパスや区切り文字が異なるため、文字列を直接入力するよりも、これらのFileクラス変数を使用することで、OSに依存しないエラーの少ないプログラムを実装できます。

Fileコンストラクタ

コンストラクタ 説明
File(String pathname) 入力したpathname(ファイル名を含む)パスのファイルオブジェクトを作成します。
File(String parent, String child) parentディレクトリパスのchildファイルに対するオブジェクトを作成します。
File(File parent, String child) ファイルオブジェクトparentchildファイルに対するオブジェクトを作成します。
File(URI uri) uriパスに対するファイルオブジェクトを作成します。

Fileメソッド

ファイル参照関連メソッド

メソッド 説明
File getAbsoluteFile() ファイルの絶対パスを返します。
String getAbsolutePath() ファイルの絶対パスを文字列で返します。
File getCanonicalFile() ファイルの正規パスを返します。
String getCanonicalPath() ファイルの正規パスを文字列で返します。
String getName() ファイルまたはフォルダの名前を返します。
String getParent() 親パスのパス名を文字列で返します。
File getParentFile() 親フォルダをFile形式で返します。
String getPath() ファイルのパスを文字列で返します。
long getTotalSpace() ハードディスクの総容量を返します。
long getUsableSpace() ハードディスクの使用可能容量を返します。
long getFreeSpace() ハードディスクの空き容量を返します。
int hashCode() ハッシュコードを返します。
long lastModified() 該当パスのファイルの最終更新日時を返します。
long length() 該当パスのファイルの長さを返します。
Path toPath() java.nio.file.Pathオブジェクトとして返します。
URI toURI() URI形式でファイルパスを返します。
File[] listRoots() ハードディスクのルートパスを返します。
String[] list() パス内のファイルとフォルダを文字列配列で返します。
String[] list(FilenameFilter filter) filterを満たすファイルとフォルダ名を文字列配列で返します。
File[] listFiles() 該当パスのファイルとフォルダをFile配列で返します。
File[] listFiles(FileFilter filter) filterを満たすファイルとフォルダをFile配列で返します。
File[] listFiles(FilenameFilter filter) filterを満たすファイルとフォルダをFile配列で返します。

ファイル操作(作成、修正、削除)関連メソッド

メソッド 説明
boolean createNewFile() 指定した名前のファイルが存在しない場合、新規作成します。
static File createTempFile(String prefix, String suffix) ファイル名にprefixsuffix(nullの場合は.tmp)を付けて、デフォルトの一時ファイルディレクトリに一時ファイルを作成します。
static File createTempFile(String prefix, String suffix, File directory) 指定したprefixsuffix(nullの場合は.tmp)を付けて、directoryに一時ファイルを作成します。
boolean delete() ファイルまたはディレクトリを削除します。ただし、ディレクトリが空でない場合は削除できません。
void deleteOnExit() Java仮想マシンの終了時にファイルを削除します。
boolean mkdir() 該当パスにフォルダを作成します。成功するとtrue、失敗するとfalseを返します。
boolean mkdirs() 存在しない親ディレクトリも含めて、該当パスにフォルダを作成します。
boolean renameTo(File dest) ファイルをdestに変更します。名前だけでなくパスも変更されます。

ファイルチェック関連メソッド

メソッド 説明
boolean exists() ファイルが存在するかどうかを返します。
boolean isAbsolute() 該当パスが絶対パスかどうかを返します。
boolean isDirectory() 該当パスがディレクトリかどうかを返します。
boolean isFile() 該当パスがファイルかどうかを返します。
boolean isHidden() 該当パスが隠しファイルかどうかを返します。

ファイル権限関連メソッド

メソッド 説明
boolean canExecute() ファイルの実行権限があるかどうかを返します。
boolean canRead() ファイルの読み取り権限があるかどうかを返します。
boolean canWrite() ファイルの書き込み権限があるかどうかを返します。
boolean setExecutable(boolean executable) ファイル所有者の実行権限を設定します。
boolean setExecutable(boolean executable, boolean ownerOnly) ファイルの実行権限を所有者または全員に対して設定します。
boolean setReadable(boolean readable) ファイル所有者の読み取り権限を設定します。
boolean setReadable(boolean readable, boolean ownerOnly) ファイルの読み取り権限を所有者または全員に対して設定します。
boolean setReadOnly() ファイルを読み取り専用に変更します。
boolean setWritable(boolean writable) ファイル所有者の書き込み権限を設定します。
boolean setWritable(boolean writable boolean ownerOnly) ファイルの書き込み権限を所有者または全員に対して設定します。

Fileの例

例1
次の例は、特定のファイルに関する情報を画面に表示します。

package com.devkuma.tutorial.java.io;

import java.io.File;
import java.io.IOException;

public class FileClass {

    public static void main(String[] args) {

        // file.txt 객체 생성한다.
        File file = new File("file.txt");

        // 파일이 존재 여부를 체크한다.
        if (file.exists()) {

            try {
                // 파일 이름을 표시한다.
                System.out.println("getName: " + file.getName());
                // 파일 경로을 표시한다.
                System.out.println("getPath: " + file.getPath());
                // 파일 절대 경로 표시한다.
                System.out.println("getAbsolutePath : " + file.getAbsolutePath());
                // 파일 정규 경로 표시한다.
                System.out.println("getCanonicalPath : " + file.getCanonicalPath());
                // 상위 디렉터리를 표시한다.
                System.out.println("getParent : " + file.getParent());

                // 파일의 쓰기/읽기 권한 체크한다.
                if (file.canWrite())
                    System.out.println(file.getName() + " can write.");
                if (file.canRead())
                    System.out.println(file.getName() + " can read.");

                // 객체의 파일, 폴더 여부 체크한다.
                if (file.isFile()) {
                    System.out.println(file.getName() + " is file");
                }
                if (file.isDirectory()) {
                    System.out.println(file.getName() + " is directory.");
                }

                // 파일 내용 길이를 표시한다.
                System.out.println(file.getName() + " length=" + file.length());

            } catch (IOException e) {
                e.printStackTrace();
            }

        } else {
            System.out.println("not found file");
        }
    }
}

実行結果は次のとおりです。

getName: file.txt
getPath: file.txt
getAbsolutePath : /Users/{user}/workspace/java-tutorial/file.txt
getCanonicalPath : /Users/{user}/workspace/java-tutorial/file.txt
getParent : null
file.txt can write.
file.txt can read.
file.txt is file
file.txt length=26

例2
次の例は、特定のディレクトリにあるファイルとディレクトリの一覧を表示します。

package com.devkuma.tutorial.java.io;

import java.io.File;

public class FileClass2 {

    public static void main(String[] args) {

        // 프로젝트 현재 디렉터리를 객체로 생성한다.
        File file = new File(".");

        // 폴더의 파일/폴더 목록을 문자열 배열로 반환
        String[] files = file.list();

        // 출력
        for (String fileName : files) {
            System.out.println(fileName);
        }
    }
}

実行結果:

.classpath
.project
.settings
bin
file.txt
src

例3
次の例は、ルートパスを表示し、ハードディスクの容量を画面に表示します。

package com.devkuma.tutorial.java.io;

import java.io.File;

public class FileClass3 {

    public static void main(String[] args) {

        // 하드디스크의 루트 경로(드라이브)들을 배열로 반환한다.
        File[] roots = File.listRoots();

        for (File root : roots) {

            // 루트 경로(드라이브)의 절대 경로
            String drive = root.getAbsolutePath();
            // 하드디스크 전체 용량
            long totalSpace = root.getTotalSpace();
            // 사용가능한 디스크 용량
            long usableSpace = root.getUsableSpace();
            // 여유 디스크 용량
            long freeSpace = root.getFreeSpace();
            // 사용한 디스크 용량
            long usedSpace = totalSpace - usableSpace;

            System.out.println("root : " + drive);
            System.out.println("Total Space : " + totalSpace);
            System.out.println("Usable Space : " + usableSpace);
            System.out.println("Free Space : " + freeSpace);
            System.out.println("Used Space : " + usedSpace);
        }
    }
}

実行結果:

root : /
Total Space : 598000009216
Usable Space : 100067610624
Free Space : 100329754624
Used Space : 497932398592