Java ファイル – java.nio.file.Files クラス

Java FilesクラスはJava 1.7で導入され、java.nio.fileパッケージの一部です。

Java Filesクラス

  • Java Filesクラスには、ファイルやディレクトリに対して操作する静的メソッドが含まれています。static
  • このクラスは、ファイルシステムのファイルまたはディレクトリを作成、読み取り、書き込み、コピー、削除などの基本的なファイル操作に使用されます。

次に進む前に、以下の用語をまず見てみましょう:

  1. Path: これは、Java NIOで作業するときにファイルまたはディレクトリの表現としてjava.io.Fileクラスを置き換えるインターフェースです。
  2. Paths: このクラスには、Pathインスタンスを作成するための静的メソッドが含まれています。

java.nio.file.Path インターフェースは、古いjava.io.Fileクラスと似ています。 Pathはファイルの場所を表し、新しいファイルのPathを作成すると、Files.createFile(Path filePath)を使用して実際のファイルを作成するまで実際のファイルは作成されません。上のダイアグラムで見られるように、PathsクラスはPathのインスタンスを作成するために使用され、FilesクラスはPathのインスタンスを使用してファイルに対処します。FileおよびPathオブジェクトはお互いに変換する方法を知っており、これにより古いコードを新しいFilesユーティリティで使用できます。

Java IO vs NIO

Pathの作成方法

Paths.get(String first, String... more)メソッドをPathsクラスの呼び出しによってPathのオブジェクトを作成できます。

Path path1 = Paths.get("/tmp/file.txt"); // For UNIX

Path path2 = Paths.get("D:/data/file.txt"); // For Windows

Paths.get()メソッドでパスの部分を区切ってPathのオブジェクトを作成することもできます。

Path path1 = Paths.get("/tmp", "file.txt");

Path path2 = Paths.get("D:", "data", "file.txt");

Path path3 = Paths.get("D:/data", "file.txt") ;

見られるように、Paths.get()メソッドにフォルダー名とファイル名を別々に渡すことができます。

Javaファイルメソッド

Java NIO Filesクラスには、ファイルやディレクトリを操作するための静的メソッドが含まれており、これらのメソッドは主にPathオブジェクト上で動作します。以下にFilesクラスのメソッドを見てみましょう:

  1. copy(InputStream in、Path target、CopyOption… options): このメソッドは、指定された入力ストリームから指定されたターゲットファイルにすべてのバイトをコピーし、読み取られたまたは書き込まれたバイト数をlong値として返します。
  2. copy(Path source、OutputStream out): このメソッドは、指定されたソースファイルから指定された出力ストリームにすべてのバイトをコピーし、読み取られたまたは書き込まれたバイト数をlong値として返します。
  3. copy(Path source、Path target、CopyOption… options): このメソッドは、指定されたソースファイルを指定されたターゲットファイルにコピーし、ターゲットファイルのパスを返します。
  4. createDirectories(Path dir、FileAttribute<?>… attrs): このメソッドは、指定されたパスを使用してディレクトリを作成し、存在しない親ディレクトリをまず作成します。ディレクトリが既に存在するために作成できなかった場合、このメソッドは例外をスローしません。 FileAttributeは、存在しないディレクトリを作成する際に自動的に設定するオプションのパラメータであり、作成されたディレクトリのパスを返します。
  5. createDirectory(Path dir, FileAttribute<?>… attrs): このメソッドは、指定されたパスを使用してディレクトリを作成し、ディレクトリの作成に成功した場合は作成されたディレクトリのパスを返します。ディレクトリがすでに存在している場合は、nio.file.FileAlreadyExistsException をスローします。
  6. createFile(Path path, FileAttribute<?>… attrs): このメソッドは、指定されたパスを使用して新しい空のファイルを作成し、ファイルの作成に成功した場合は新しく作成されたファイルのパスを返します。ファイルがすでに存在している場合は、nio.file.FileAlreadyExistsException をスローします。
  7. createTempDirectory(Path dir, String prefix, FileAttribute<?>… attrs): このメソッドは、指定されたパスを使用して一時ディレクトリを作成し、指定された接頭辞を使用してディレクトリの名前を生成します。新しく作成された一時ディレクトリのパスを返します。
  8. createTempDirectory(String prefix, FileAttribute<?>… attrs): このメソッドは、デフォルトの一時ファイルディレクトリに一時ディレクトリを作成し、指定された接頭辞を使用してディレクトリの名前を生成します。デフォルトのファイルシステムに関連付けられた新しく作成された一時ディレクトリのパスを返します。
  9. createTempFile(Path dir, String prefix, String suffix, FileAttribute<?>… attrs): このメソッドは、指定されたディレクトリに一時ファイルを作成し、指定された接頭辞と接尾辞を使用してファイル名を生成し、新しく作成されたファイルのパスを返します。
  10. createTempFile(String prefix, String suffix, FileAttribute このメソッドは、デフォルトの一時ファイルディレクトリに一時ファイルを作成し、指定された接頭辞と接尾辞を使用してファイル名を生成し、新しく作成されたファイルのパスを返します。
  11. delete(Path path): これはvoidメソッドであり、指定されたパスからファイルを単純に削除します。このメソッドは、指定されたパスにファイルが存在しない場合や、ファイルがディレクトリであり空でない場合、削除できない場合にはNoSuchFileExceptionをスローします。この場合、
  12. をスローします。deleteIfExists(Path path): このメソッドは、ファイルを削除する前にファイルが存在するかどうかをチェックし、指定されたパスのファイルが正常に削除された場合は真のブール値を返し、指定されたパスにファイルが存在しない場合は偽を返します。ファイルがディレクトリであり、空でない場合や削除できない場合には
  13. をスローします。exists(Path path): このメソッドは、指定されたパスにファイルが存在するかどうかをチェックし、ファイルが存在する場合はtrueを返し、そうでない場合はfalseを返します。
  14. getLastModifiedTime(Path path, Linkoption… options): このメソッドは、指定されたパスからファイルの最終更新時刻を返します。
  15. getOwner(Path path, Linkoption… options): このメソッドは、指定されたパスのファイルの所有者を表すUserPrincipalを返します。
  16. isDirectory(Path path, LinkOption… options): このメソッドは、指定されたパスからファイルがディレクトリかどうかを確認します。ファイルがディレクトリの場合はtrueを返し、ファイルが存在しない、またはディレクトリでない、またはファイルがディレクトリかどうかが判別できない場合はfalseを返します。
  17. isExecutable(Path path): このメソッドは、指定されたパスのファイルが実行可能かどうかを確認します。また、ファイルが存在し、このJVMがファイルを実行するための適切な特権を持っているかどうかも確認します。指定されたパスにファイルが存在し、実行可能である場合はtrueを返し、ファイルが存在しないか、JVMにファイルを実行するための十分な特権がないか、アクセスが判別できない場合はfalseを返します。
  18. isHidden(Path path): このメソッドは、指定されたパスのファイルが隠しファイルかどうかを判定します。隠しファイルの正確な定義はプラットフォームやプロバイダーに依存します。UNIXシステムの場合、ファイルがピリオド文字(’.’)で始まる場合にファイルは隠しファイルと見なされます。WINDOWSの場合、ファイルはディレクトリでなく、DOSの非表示属性が設定されている場合に隠しファイルと見なされます。指定されたパスのファイルが隠しファイルと見なされる場合はtrueを返し、それ以外の場合はfalseを返します。
  19. isReadable(Path path): このメソッドは、指定されたパスのファイルが読み込み可能かどうかをテストします。指定されたパスのファイルが存在し、読み込み可能である場合はtrueを返し、ファイルが存在せず、JVMが十分な特権を持っていないか、アクセスが判別できない場合はfalseを返します。
  20. isWritable(Path path):このメソッドは、指定されたパスのファイルが書き込み可能かどうかをテストします。指定されたパスのファイルが存在し、書き込み可能であればtrueを返し、ファイルが存在しないか、JVMが十分な権限を持っていないために書き込みアクセスが拒否され、またはアクセスが判別できない場合はfalseを返します。
  21. move(Path source, Path target, CopyOption… options):このメソッドは、ソースファイルをターゲットファイルに移動または名前変更し、ターゲットファイルのパスを返します。オプションパラメータには次のものが含まれる場合があります:REPLACE_EXISTING:ターゲットファイルが存在する場合、空でないディレクトリでない限り、それを置換します。ATOMIC_MOVE:移動は、アトミックファイルシステム操作として実行され、他のすべてのオプションが無視されます。このメソッドは、ターゲットファイルが存在するが、REPLACE_EXISTINGオプションが指定されていないために置換できない場合にFileAleadyExistsExceptionをスローします。このメソッドは、REPLACE_EXISTINGオプションが指定されているが、ファイルが空でないディレクトリであるために置換できない場合にDirectoryNotEmptyExceptionをスローします。
  22. newBufferedReader(Path path, Charset cs):このメソッドは、指定されたパスを使用してファイルを読み取るためのBufferedReaderを返します。ファイルからのバイトは、指定された文字セットを使用して文字にデコードされます。
  23. newBufferedWriter(Path path, Charset cs, Openoption… options): このメソッドは、指定されたパスを使用してファイルを開いたり作成したりし、ファイルにテキストを書き込むために使用されるBufferedWriterを返します。optionsパラメータは、ファイルが作成されるかオープンされる方法を指定します。オプションが指定されていない場合、デフォルトでCREATE、TRUNCATE_EXISTING、およびWRITEオプションが考慮されます。これは、ファイルを書き込み用に開き、ファイルが存在しない場合は作成し、ファイルが存在する場合はサイズを0に切り捨てます。このメソッドは、サポートされていないオプションが指定されている場合にUnsupportedOperationExceptionをスローします。
  24. newByteChannel(Path path, OpenOption… options): このメソッドは、指定されたパスを使用してファイルを作成またはオープンし、ファイルにアクセスするためのシーク可能なバイトチャネルを返します。このメソッドは、サポートされていないオプションが指定されている場合にUnsupportedOperationExceptionをスローします。
  25. newDirectoryStream(Path path): このメソッドは、指定されたパスからディレクトリを開き、ディレクトリ内のすべてのエントリを反復処理するためのDirectoryStreamを返します。DirectoryStreamのイテレータによって返される要素はPath型であり、それぞれがディレクトリ内のエントリを表します。このメソッドは、指定されたパスのファイルがディレクトリではないため開くことができない場合にNotDirectoryExceptionをスローします。
  26. newDirectoryStream(Path path, Filter<? super Path > filter): このメソッドは、指定されたパスからディレクトリ全体のエントリを反復処理するためのDirectoryStreamを返すことでディレクトリを開きます。DirectoryStreamのイテレータによって返される要素はPath型であり、それぞれがディレクトリ内のエントリを表し、指定されたフィルタによってこれらのエントリがフィルタされます。このメソッドは、指定されたパスのファイルがディレクトリではないため開けない場合にNotDirectoryExceptionをスローします。
  27. newDirectoryStream(Path path, String glob): このメソッドは、指定されたパスからディレクトリ全体のエントリを反復処理するためのDirectoryStreamを返すことでディレクトリを開きます。DirectoryStreamのイテレータによって返される要素はPath型であり、それぞれがディレクトリ内のエントリを表し、これらのエントリは指定されたグロブパターンと一致するファイル名の文字列表現によってフィルタされます。このメソッドは、指定されたパスのファイルがディレクトリではないため開けない場合にNotDirectoryExceptionをスローし、パターンが無効な場合にPatternSyntaxExceptionをスローします。
  28. newInputStream(Path path, Openoption… options): このメソッドは、指定されたパスからファイルを読み込むための入力ストリームを返すことでファイルを開きます。オプションパラメーターは、ファイルがどのように開かれるかを決定し、オプションが指定されていない場合はREADでファイルを開きます。このメソッドは、無効なオプションの組み合わせが指定された場合にIllegalArgumentExceptionをスローし、サポートされていないオプションが指定された場合にUnsupportedOperationExceptionをスローします。
  29. newOutputStream(Path path, OpenOption… options):このメソッドは、指定されたパスにファイルを開いて、ファイルにバイトを書き込むための出力ストリームを返します。optionsパラメーターは、ファイルがどのように開かれるかを決定します。オプションが指定されていない場合、デフォルトでCREATE、TRUNCATE_EXISTING、およびWRITEオプションが考慮されます。これは、ファイルを書き込むためにファイルを開き、ファイルが存在しない場合は作成し、ファイルが存在する場合はサイズを0に切り詰めます。このメソッドは、オプションの無効な組み合わせが指定された場合にIllegalArgumentExceptionをスローし、サポートされていないオプションが指定された場合にUnsupportedOperationExceptionをスローします。
  30. notExists(Path path, LinkOption options):このメソッドは、指定されたパスのファイルが存在しないかどうかをテストします。オプションパラメーターは、ファイルがシンボリックリンクである場合の処理方法を示すために使用されます。デフォルトでは、シンボリックリンクがフォローされます。オプションNOFOLLOW_LINKが存在する場合、シンボリックリンクはフォローされません。このメソッドは、指定されたパスにファイルが存在しない場合はtrueを返し、ファイルが存在するかどうか、またはその存在が判断できない場合はfalseを返します。
  31. readAllBytes(Path path):このメソッドは、指定されたパスのファイルからすべてのバイトを読み取り、ファイルから読み取られたバイトを含むバイト配列を返します。
  32. readAllLines(Path path, Charset cs):このメソッドは、指定されたパスのファイルからすべての行を読み取り、ファイルからの行を含むListを返します。
  33. size(Path path): このメソッドは、指定されたパスのファイルのサイズ(バイト単位)を返します。
  34. walkFileTree(Path start, FileVisitor<? Super Path> visitor): このメソッドは、ディレクトリを走査するために使用されます。指定されたパスのディレクトリを再帰的に走査し、開始ファイルを返します。
  35. write(Path path, byte[] bytes, OpenOption… options): このメソッドは、指定されたパスのファイルにバイトを書き込みます。オプションパラメータは、ファイルの作成またはオープン方法を指定します。オプションが指定されていない場合、デフォルトでCREATE、TRUNCATE_EXISTINGおよびWRITEオプションが考慮されます。これは、ファイルを書き込み用に開き、ファイルが存在しない場合は作成し、ファイルが存在する場合はサイズを0に切り捨てます。バイト配列内のすべてのバイトがファイルに書き込まれます。このメソッドは、すべてのバイトが書き込まれたときにファイルが閉じられることを保証し、書き込まれたファイルのパスを返します。

Filesクラスを使用してファイルを作成する

Filesクラスは、指定されたPathを使用してファイルを作成するためのcreateFile(Path filePath, FileAttribute<?>… attrs)メソッドを提供します。以下の例プログラムをご覧ください。

package com.journaldev.examples;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * Java Create file using Files class
 * 
 * @author pankaj
 *
 */
public class FilesCreateFileExample {

	public static void main(String[] args) {
		
		// Pathオブジェクトの初期化
		Path path = Paths.get("D:/data/file.txt");
		// ファイルの作成
		try {
			Path createdFilePath = Files.createFile(path);
			System.out.println("File Created at Path : "+createdFilePath);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

上記のプログラムの出力は以下の通りです:

File Created at Path : D:\data\file.txt

Filesクラスを使用してディレクトリを作成する

Filesクラスは、指定されたPathを使用して単一および多レベルのディレクトリを作成するためのcreateDirectory(Path dir, FileAttribute<?>… attrs)およびcreateDirectories(Path dir, FileAttribute<?>… attrs)メソッドを提供します。以下の例プログラムを見てみましょう。

package com.journaldev.examples;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * Java Create directories using Files class
 * 
 * @author pankaj
 *
 */
public class FilesCreateDirectoriesExample {

	public static void main(String[] args) {
		// Pathオブジェクトの初期化
		Path path1 = Paths.get("D:/pankaj");
		Path path2 = Paths.get("D:/pankaj/java7");
		Path path3 = Paths.get("D:/pankaj/java7/Files");
		
		try {
			Path createdDir1 = Files.createDirectory(path1);//first level directory
			Path createdDir2 = Files.createDirectory(path2);//second level directory
			Path createdDir3 = Files.createDirectory(path3);//all level directories
			System.out.println("First Level Directory Created at Path : "+createdDir1);
			System.out.println("Second Level Directory Created at Path : "+createdDir2);
			System.out.println("All Level Directories Created at Path : "+createdDir3);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

上記のプログラムの出力は以下の通りです:

First Level Directory Created at Path : D:\pankaj
Second Level Directory Created at Path : D:\pankaj\java7
All Level Directories Created at Path : D:\pankaj\java7\Files

ファイルをパスに変換およびその逆

ファイルとパスのオブジェクトは、以下のメソッドを使用して互換性を持たせることができます:

File file = new File(“D:/data/file.txt”);

Path path = file.toPath();

File file1 = path.toFile();

Filesクラスを使用してファイルデータを読み取る

Filesクラスは、ファイルの読み取りに以下のメソッドを提供します。

  1. readAllBytes(Path path): このメソッドは指定されたパスのファイルからすべてのバイトを読み取り、ファイルから読み取られたバイトを含むバイト配列を返します。
  2. readAllLines(Path path,Charsetcs): このメソッドは、指定されたパスのファイルからすべての行を読み取り、ファイルからの行を含むListを返します。

以下の例プログラムを見てみましょう。

package com.journaldev.examples;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;

/**
 * Java Files read file example
 * 
 * @author pankaj
 *
 */
public class FilesReadFileExample {

	public static void main(String[] args) {
		
		Path path = Paths.get("D:/data/file.txt");
		try {
			byte[] bs = Files.readAllBytes(path);
			List<String> strings = Files.readAllLines(path);
			
			System.out.println("Read bytes: \n"+new String(bs));
			System.out.println("Read lines: \n"+strings);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

上記プログラムの出力は以下の通りです:

Read bytes: 
Hello world
This is Read file example
Thank you
Read lines: 
[Hello world, This is Read file example, Thank you]

Filesクラスを使用してファイルをコピーする

Filesクラスは、指定されたソースファイルを指定されたターゲットファイルにコピーするcopy(Path source, Path target, CopyOption… options)メソッドを提供し、ターゲットファイルのパスを返します。以下の例プログラムを見てみましょう:

package com.journaldev.examples;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

/**
 * Java Files copy file example
 * 
 * @author pankaj
 *
 */
public class FilesCopyFileExample {

	public static void main(String[] args) {
		Path sourcePath = Paths.get("D:/data/sourceFile.txt");
		Path targetPath = Paths.get("D:/data/targetFile.txt");
		
		try {
			Path path = Files.copy(sourcePath, targetPath,StandardCopyOption.REPLACE_EXISTING);//copy with REPLACE_EXISTING option
			System.out.println("Target file Path : "+path);
			System.out.println("Copied Content : \n"+new String(Files.readAllBytes(path)));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

上記プログラムの出力は以下の通りです:

Target file Path : D:\data\targetFile.txt
Copied Content : 
Hello world
This is Copy file example
Thank you

Filesクラスを使用してファイルを移動する

JavaのFilesクラスには、move(Path source, Path target, CopyOption… options)メソッドがあり、これはソースファイルをターゲットファイルに移動または名前を変更し、ターゲットファイルのパスを返します。オプションパラメータには、次のようなものが含まれる可能性があります:REPLACE_EXISTING:これは、ターゲットファイルが存在する場合、それが空でないディレクトリでない場合にのみ、それを置換します。ATOMIC_MOVE:これは、移動がアトミックファイルシステム操作として実行され、他のすべてのオプションが無視されることを意味します。このメソッドは、ターゲットファイルが存在し、REPLACE_EXISTINGオプションが指定されていないため置換できない場合に、FileAleadyExistsExceptionをスローします。このメソッドは、REPLACE_EXISTINGオプションが指定されているが、ファイルが空でないディレクトリであるため置換できない場合に、DirectoryNotEmptyExceptionをスローします。以下の例プログラムを見てみましょう:

package com.journaldev.examples;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

/**
 * Java Files move file example
 * 
 * @author pankaj
 *
 */
public class FilesMoveFileExample {

	public static void main(String[] args) {
		Path sourcePath = Paths.get("D:/data/sourceFile.txt");
		Path targetPath = Paths.get("D:/data/targetFile.txt");
		try {
			Path path = Files.move(sourcePath, targetPath,StandardCopyOption.REPLACE_EXISTING);//move with REPLACE_EXISTING option
			System.out.println("Target file Path : "+path);
			System.out.println("Moved Content : \n"+new String(Files.readAllBytes(path)));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

Filesクラスを使用してファイルを書き込む

Java NIOファイルクラスは、指定されたパスにバイトを書き込むwrite(Path path, byte[] bytes, OpenOption… options)メソッドを提供します。オプションパラメーターは、ファイルが作成されるか開かれる方法を指定します。オプションが指定されていない場合は、デフォルトでCREATE、TRUNCATE_EXISTING、およびWRITEオプションを考慮します。これは、ファイルを書き込み用に開き、ファイルが存在しない場合は作成し、ファイルが存在する場合はサイズを0に切り詰めます。バイト配列内のすべてのバイトがファイルに書き込まれます。このメソッドは、すべてのバイトが書き込まれたときにファイルが閉じられることを保証し、書き込まれたファイルのパスを返します。

package com.journaldev.examples;

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

/**
 * Java Files write file example
 * 
 * @author pankaj
 *
 */
public class FilesWriteFileExample {

	public static void main(String[] args) {
		Path path = Paths.get("D:/data/test.txt");
		try {
			String str = "This is write file Example";
			byte[] bs = str.getBytes();
			Path writtenFilePath = Files.write(path, bs);
			System.out.println("Written content in file:\n"+ new String(Files.readAllBytes(writtenFilePath)));
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

ファイルツリーを歩く

Filesクラスは、walkFileTree(Path start, FileVisitor<? Super Path> visitor)メソッドを提供し、ディレクトリをトラバースするために使用されます。指定されたパスのディレクトリを再帰的にトラバースし、開始ファイルを返します。

package com.journaldev.examples;

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.FileVisitor;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.attribute.BasicFileAttributes;

/**
 * Java Files walk file tree example
 * 
 * @author pankaj
 *
 */
public class FilesWalkFileTreeExample {

	public static void main(String[] args) {
		Path path = Paths.get("D:/pankaj");
		try {
			Files.walkFileTree(path, new FileVisitor<Path>() {

				@Override
				public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
					System.out.println("Post Visit Directory: "+dir);
					return FileVisitResult.CONTINUE;
				}

				@Override
				public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
					System.out.println("Pre Visit Directory: "+dir);
					return FileVisitResult.CONTINUE;
				}

				@Override
				public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
					System.out.println("Visit File: "+file);
					return FileVisitResult.CONTINUE;
				}

				@Override
				public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
					System.out.println("Visit Failed File: "+file);
					return FileVisitResult.CONTINUE;
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

上記プログラムの出力は以下の通りです:

Pre Visit Directory: D:\pankaj
Pre Visit Directory: D:\pankaj\java6
Pre Visit Directory: D:\pankaj\java6\Files
Visit File: D:\pankaj\java6\Files\file.txt.txt
Post Visit Directory: D:\pankaj\java6\Files
Post Visit Directory: D:\pankaj\java6
Pre Visit Directory: D:\pankaj\java7
Pre Visit Directory: D:\pankaj\java7\Files
Visit File: D:\pankaj\java7\Files\file.txt.txt
Post Visit Directory: D:\pankaj\java7\Files
Post Visit Directory: D:\pankaj\java7
Pre Visit Directory: D:\pankaj\java8
Pre Visit Directory: D:\pankaj\java8\Files
Visit File: D:\pankaj\java8\Files\file.txt.txt
Post Visit Directory: D:\pankaj\java8\Files
Post Visit Directory: D:\pankaj\java8
Post Visit Directory: D:\pankaj

すべてのファイルとフォルダが再帰的に処理されることに注意してください。これは、ディレクトリ内のすべてのファイルの名前を再帰的に変更するなど、すべてのファイルに共通の処理を行いたい場合に非常に役立ちます。これでJava Filesクラスに関する説明は終わりです。参考:API Doc

Source:
https://www.digitalocean.com/community/tutorials/java-files-nio-files-class