【Java】ファイル操作

Javaでのファイル操作

Fileクラス(java.io)

ファイルまたはディレクトリについての情報である抽象パス名をもとにファイルに関する様々な操作を行う
コンストラク
4つのコンストラクタが存在する。 情報はあくまで"抽象パス名"であるため、指定された値の存在有無は関係ない
また、A:\B:\のような不正なパス(空文字もOK)も問題なくインスタンス化可能
①のparentがnullの場合は、childがそのままパスとされ、それ以外はNullPointerException
File(File parent, String child)// ①
File(String pathname)// ②
File(String parent, String child)// ③
File(URI uri)// ④
③のコンストラクタでの区切り文字について、考えられる以下のいずれもA:\B\C\Dになる
var file1 = new File("A:\\B\\", "C\\D");
var file2 = new File("A:\\B", "C\\D");
var file3 = new File("A:\\B", "\\C\\D");
var file4 = new File("A:\\B\\", "\\C\\D");
var file5 = new File("A:\\B\\\\\\\\", "\\\\\\\\\\C\\D");
String toString()

抽象パス名のパス名文字列を返す

Path toPath()
抽象パスから構築されたjava.nio.file.Pathオブジェクトを返す
File listFiles()
ディレクトリ内のファイルおよびディレクトリを示す抽象パス名
String list()
ディレクトリにあるファイルおよびディレクトリを示す※文字列の配列 ※現在のインスタンスのパス名は不随しない。
boolean exists()
ファイルが存在するか

Pathインタフェース(java.nio.file)

ファイルシステム内のパスをプログラムで表現したもので、ファイルを特定するために使用可能なオブジェクト
特別な区切り文字で区切られた一連のディレクトリ名およびファイル名の要素(名前要素)で構成される階層構造を持つ
Fileクラスで可能な操作は基本的にPathインタフェースでも可能
コンストラク
インタフェース、インスタンス化は以下のいずれかで行う
FileSystems.getDefault().getPath(String first, String... more)
Paths.get(Uri uri)
Paths.get(String first, String... more)
Fileクラスと大きく異なる点は、A:\B:\のような不正なパス(空文字はOK)はInvalidPathExceptionが発生
ただし、WindowsPathParserのエラーなのでOSが異なる場合は不明
Fileクラスと異なり可変長引数で、各引数の結合時の区切り文字はFileクラスと同様

Filesクラス(java.nio.file)

Fileクラスよりも高度なファイル操作を行える。staticメソッドだけで構成されているクラス