Java File類の学習

19287 ワード

Fileクラスの概要
java.io.File類はファイルとディレクトリパス名の抽象的な表現で、主にファイルとディレクトリの作成、検索、削除などの操作に用いられます。
 
Fileクラスの部分構造方法
/**
 *                    File  。
 */
private File(String child, File parent) {
    ...
}

/**
 *                          File  。
 */
public File(String pathname) {
    ...
}
 
パスセパレータとデフォルトの名前のセパレータ
//file.separator//  UNIX   ,      '/'; Microsoft Windows   ,      '\'
public static final char separatorChar = fs.getSeparator();
//                ,           。
public static final String separator = "" + separatorChar;
//path.separator//                         。 UNIX   ,    ':'//  Microsoft Windows   ,    ';'
public static final char pathSeparatorChar = fs.getPathSeparator();
//
public static final String pathSeparator = "" + pathSeparatorChar;
以下、Unixシステムに基づくmacOSシステムを例にとって説明する。
 
システムに依存するデフォルトの名前のセパレータ
import java.io.File;

public class Demo01Separator {
    public static void main(String[] args) {
        //
        char separatorChar = File.separatorChar;
        System.out.println("             '" + separatorChar + "'");

        //                ,           。
        String separatorString = File.separator;
        System.out.println("             '" + separatorString + "'");
    }
}
     :
             '/'
             '/'
 
システムに依存するパスの区切り記号
import java.io.File;

public class Demo01PathSeparator {
    public static void main(String[] args) {
        //              
        char pathSeparatorChar = File.pathSeparatorChar;
        System.out.println("              '" + pathSeparatorChar + "'");

        //
        String pathSeparatorString = File.pathSeparator;
        System.out.println("              '" + pathSeparatorString + "'");
    }
}
':'
              ':'
プログラムはプラットフォームをまたぐ場合が多いので、パスを書き込みせずに、複数の静的メンバー変数を使ってセパレータを取得できます。
 
File類の部分構造方法の使用
public class Demo02File {
    public static void main(String[] args) {
        //                          File  。
        File file1 = new File("~/IdeaProjects/Study/src/view/study/demo27/Demo02File.java");
        System.out.println(file1);

        //                    File  。
        File file2 = new File("~/IdeaProjects/Study/", "/src/view/study/demo27/Demo02File.java");
        System.out.println(file2);
    }
}
 
~/IdeaProjects/Study/src/view/study/demo27/Demo02File.java
~/IdeaProjects/Study/src/view/study/demo27/Demo02File.java
 
Fileクラス取得機能の一般的な方法
public String getAbsolutePath():   File         。

public String getPath():  File         。

public String getName():    File           。

public long length():    File        。
 
これらの方法の使用
import java.io.File;

public class Demo01FileMethod {
    public static void main(String[] args) {
        File file = new File("~/IdeaProjects/Study/src/view/study/demo27/Demo01FileMethod.java");

        //    File         。
        String fileAbsolutePath = file.getAbsolutePath();

        //   File         。
        String filePath = file.getPath();

        //     File           。
        String fileName = file.getName();

        //     File        。
        long fileLength = file.length();

        System.out.println("    :" + fileAbsolutePath);
        System.out.println("      :" + filePath);
        System.out.println("        :" + fileName);
        System.out.println("     :" + fileLength);
    }
}
     :
    :/Users/liyihua/IdeaProjects/Study/~/IdeaProjects/Study/src/view/study/demo27/Demo01FileMethod.java
      :~/IdeaProjects/Study/src/view/study/demo27/Demo01FileMethod.java
        :Demo01FileMethod.java
     :0
ファイルパスが存在しません。戻りファイルの長さは0です。
 
File類判定機能の一般的な方法
public boolean exists(): File              。

public boolean isDirectory(): File        。

public boolean isFile(): File        。
 
これらの方法の使用
import java.io.File;

public class Demo02FileMethod {
    public static void main(String[] args) {
        File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27");

        boolean exiFile = file.exists();
        boolean isD = file.isDirectory();
        boolean isF = file.isFile();

        System.out.println("           :" + exiFile);
        System.out.println("     :" + isD);
        System.out.println("     :" + isF);
    }
}
     :
           :truetruefalse
ファイルかディレクトリかどうかを判断する場合、パスは必ず存在します。そうでないとfalseに戻ります。
 
Fileクラスから削除機能を作成するための一般的な方法
public boolean createNewFile():                 ,         。

public boolean delete():    File        。

public boolean mkdir():    File     。

public boolean mkdirs():    File     ,              。
 
新しい空のファイルを作成します。
import java.io.File;
import java.io.IOException;

public class Demo03FileMethod {
    public static void main(String[] args) throws IOException {
        File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/test.txt");

        file.createNewFile();
    }
}
             ——test.txt
 
ファイルまたはディレクトリを削除します。
import java.io.File;
import java.io.IOException;

public class Demo04FileMethod {
    public static void main(String[] args) throws IOException {
        File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/test.txt");

        file.delete();
    }
}
           (test.txt)   
 
ディレクトリを作成
import java.io.File;
import java.io.IOException;

public class Demo05FileMethod {
    public static void main(String[] args) throws IOException {
        File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/test");

        file.mkdir();
    }
}
             ——test
 
カタログ集(親子孫カタログ)を作成します。
import java.io.File;
import java.io.IOException;

public class Demo06FileMethod {
    public static void main(String[] args) throws IOException {
        File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/t1/t2/t3");

        file.mkdirs();
    }
}
   “/Users/liyihua/IdeaProjects/Study/src/view/study/demo27”       /t1/t2/t3
 
Fileディレクトリの巡回機能
public String[] 1ist():    String  ,   File            。
public File[] listFiles(): File , File 。
 
この二つの方法の使用
import java.io.File;

public class Demo07FileMethod {
    public static void main(String[] args) {
        File file = new File("/Users/liyihua/IdeaProjects/Study/src/view/study/demo27");

        //     String  
        String[] stringList = file.list();
        //     File  
        File[] fileList = file.listFiles();

        //     
        for (String s : stringList) {
            System.out.println(s);
        }
        System.out.println("

"); for (File f : fileList) { System.out.println(f); } } }
     :
Demo01PathSeparator.java
Demo01File.java
Demo01FileMethod.java
Demo06FileMethod.java
Demo07FileMethod.java
Demo02FileMethod.java
  File 
Demo05FileMethod.java
Demo02File.java
Demo04FileMethod.java
Demo01Separator.java
Demo03FileMethod.java



/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo01PathSeparator.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo01File.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo01FileMethod.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo06FileMethod.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo07FileMethod.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo02FileMethod.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/  File 
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo05FileMethod.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo02File.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo04FileMethod.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo01Separator.java
/Users/liyihua/IdeaProjects/Study/src/view/study/demo27/Demo03FileMethod.java