【Java】ファイル

ファイルやディレクトリが存在するか調べたい

File file = new File("test.txt");

if (file.exists()) {
  //ファイルが存在する場合
} else {
  //ファイルが存在しない場合
}

ファイルかディレクトリを調べたい

if (file.isFile) {
  //ファイルが存在
}

if (file.isDirectory()) {
  //ディレクトリが存在
}

ファイルやディレクトリを削除したい

         File file = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe170/test.txt");
    
            if (!file.delete()) {
                System.out.println("ファイルの削除に失敗しました。");
            } else {
                System.out.println("ファイルの削除に成功しました。");
            }

            // ディレクトリが空ではないので削除に失敗する
            File dir = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe170/foo");
            if(!dir.delete()){
                System.out.println("ディレクトリの削除に失敗しました。");
            }
            
            // 再帰的に削除する
            deleteDirectory(dir);

    /**
     * ディレクトリを再帰的に削除するメソッド
     */
    private static void deleteDirectory(File dir) {
        // ディレクトリ内のファイルを削除
        for (File file : dir.listFiles()) {
            if (file.isDirectory()) {
                // ディレクトリの場合は再帰的に削除
                deleteDirectory(file);
            } else {
                // ファイルの場合は削除
                file.delete();
            }
        }
        // ディレクトリを削除
        dir.delete();
    }

ファイルを移動したい

     File oldFile = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe171/test.txt");
        
        if(oldFile.createNewFile()){
            System.out.println(oldFile.getName() + "を作成しました。");
        }
        
        File newFile = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe171/readme.txt");
        
        // test.txtをreadme.txtにリネーム
        if(oldFile.renameTo(newFile)){
            System.out.println(oldFile.getName() + "を" + newFile.getName() + "にリネームしました。");
        }
        
        if(newFile.delete()){
            System.out.println(newFile.getName() + "を削除しました。");
        }

ファイルのサイズを調べたい

     /////////////////////////////////////////////////////////////////////////////
        // ファイルのサイズをバイト単位で取得
        /////////////////////////////////////////////////////////////////////////////
        {
            File file = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe172/FileLengthSample.java");
            long size = file.length();
            System.out.println(size);
        }
        
        /////////////////////////////////////////////////////////////////////////////
        // ディレクトリの場合は0を返す
        /////////////////////////////////////////////////////////////////////////////
        {
            File dir = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe172");
            long size = dir.length();
            System.out.println(size);
        }

ファイルの最終更新日時を調べたい

     File file = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe173/FileLastModifiedSample.java");
        
        // ファイルの最終更新日時をミリ秒で取得
        long time = file.lastModified();
        
        // 取得した最終更新日時をDateオブジェクトに変換
        Date date = new Date(time);
        
        // 取得した最終更新日時をCalendarオブジェクトに変換
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        
        // ファイルの最終更新日時を現在日時に設定
        file.setLastModified(System.currentTimeMillis());

ファイルの属性を調べたい

     File file = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe174/test.txt");
        
        // ファイルが読み取り可能かどうかを取得
        boolean canRead = file.canRead();
        System.out.println("読み取り可能:" + canRead);
        
        // ファイルが書き込み可能かどうかを取得
        boolean canWrite = file.canWrite ( );
        System.out.println("書き込み可能:" + canWrite);
        
        // ファイルが実行可能かどうかを取得
        boolean canExecute = file.canExecute ( );
        System.out.println("実行可能:" + canExecute);
        
        // ファイルが隠しファイルかどうかを取得
        boolean isHidden = file.isHidden ( );
        System.out.println("隠しファイルかどうか:" + isHidden);

ファイルの属性を設定したい

package jp.co.shoeisha.javarecipe.chapter06.recipe175;

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

public class FileSetAttributeSample {
    
    public static void main(String[] args) throws IOException {
        File file = new File("src/jp/co/shoeisha/javarecipe/chapter06/recipe175/test.txt");
        
        // ファイルを読み取り可能に設定
        file.setReadable(true);
        System.out.println(file.canRead());
        
        // ファイルを書き込み可能に設定
        file.setWritable(true);
        System.out.println(file.canWrite());
        
        // ファイルを実行可能に設定
        file.setExecutable(true);
        System.out.println(file.canExecute());
    }
    
}

ファイルの絶対パスを取得したい

package jp.co.shoeisha.javarecipe.chapter06.recipe176;

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

public class FileAbsolutePathSample {
    
    public static void main(String[] args) throws IOException {
        /////////////////////////////////////////////////////////////////////////////
        // ファイルの絶対パスを取得する
        /////////////////////////////////////////////////////////////////////////////
        {
            File file = new File("src");
            System.out.println(file);
            
            // ファイルの絶対パスを取得する
            String absolutePath = file.getAbsolutePath();
            System.out.println(absolutePath);
        }
        
        /////////////////////////////////////////////////////////////////////////////
        // ファイルの絶対パスを取得する
        /////////////////////////////////////////////////////////////////////////////
        {
            File file = new File("src");
            System.out.println(file);
            
            // 絶対パスを持つFileオブジェクトに変換する
            File absoluteFile = file.getAbsoluteFile();
            System.out.println(absoluteFile);
        }
        
        /////////////////////////////////////////////////////////////////////////////
        // パスを正規化する
        /////////////////////////////////////////////////////////////////////////////
        {
            File file = new File("C:\\Users\\takezoe\\..\\test.txt");
            
            // 正規化したパスを取得
            String path = file.getCanonicalPath(); // => "C:¥Users¥test.txt"
            System.out.println(path);
            
            // 正規化したパスを示すFileオブジェクトを取得
            File normalized = file.getCanonicalFile();
            System.out.println(normalized);
        }
    }
    
}

ディレクトリを調べたい

ディレクトリ内のファイル一覧を取得したい

空のファイルを作成したい

一時ファイルを作成したい

ディレクトリを作成したい