Java : Files con ejemplos

Files (Java SE 22 & JDK 22) en Java con ejemplos.
Encontrará ejemplos de código en la mayoría de los métodos de Files.

Nota :


Summary

Esta clase consta exclusivamente de métodos estáticos que operan en archivos, directorios u otros tipos de archivos. (Traducción automática)

Class diagram

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

Files.writeString(path, "abcd");

System.out.println(Files.exists(path)); // true
System.out.println(Files.readString(path)); // abcd

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode                 LastWriteTime         Length Name
//----                 -------------         ------ ----
//-a---          2024/10/19    15:48              4 aaa.txt

Files.delete(path);
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

Annotation :

  • Most of the code examples in this article are run on Windows.
  • Some of the code examples are run on Linux for POSIX.

Methods

static long copy (InputStream in, Path target, CopyOption... options)

Copia todos los bytes de un flujo de entrada a un archivo. (Traducción automática)

final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

Files.writeString(source, "abcd");
System.out.println(Files.exists(source)); // true
System.out.println(Files.exists(target)); // false

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt

try (final var in = Files.newInputStream(source)) {
    final var ret = Files.copy(in, target);
    System.out.println(ret); // 4
}

final var str = Files.readString(target);
System.out.println(str); // abcd

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt
//target.txt
final var url = URI.create("https://example.com").toURL();
System.out.println(url); // https://example.com

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt
System.out.println(Files.notExists(target)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

try (final var in = url.openStream()) {
    final var ret = Files.copy(in, target);
    System.out.println(ret); // 1256
}

final var str = Files.readString(target);
System.out.println(str);

// Result
// ↓
//<!doctype html>
//<html>
//<head>
//    <title>Example Domain</title>
//...
final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

Files.createFile(target);
System.out.println(Files.exists(target)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//target.txt

final byte[] buf = {10, 20, 30};

try (final var in = new ByteArrayInputStream(buf)) {
    Files.copy(in, target);
} catch (FileAlreadyExistsException e) {
    System.out.println("FileAlreadyExistsException!");
}

// Result
// ↓
//FileAlreadyExistsException!

try (final var in = new ByteArrayInputStream(buf)) {
    Files.copy(in, target, StandardCopyOption.REPLACE_EXISTING);
    System.out.println(Arrays.toString(Files.readAllBytes(target)));
}

// Result
// ↓
//[10, 20, 30]

static long copy (Path source, OutputStream out)

Copia todos los bytes de un archivo a un flujo de salida. (Traducción automática)

final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

Files.writeString(source, "abcd");
System.out.println(Files.exists(source)); // true
System.out.println(Files.exists(target)); // false

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt

try (final var out = Files.newOutputStream(target)) {
    final var ret = Files.copy(source, out);
    System.out.println(ret); // 4
}

final var str = Files.readString(target);
System.out.println(str); // abcd

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt
//target.txt
final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

Files.write(source, new byte[]{10, 20, 30});
System.out.println(Files.exists(source)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt

try (final var out = new ByteArrayOutputStream()) {
    final var ret = Files.copy(source, out);
    System.out.println(ret); // 3

    System.out.println(Arrays.toString(out.toByteArray())); // [10, 20, 30]
}
final var source = Path.of("D:", "java-work", "xxx");
System.out.println(source); // D:\java-work\xxx
System.out.println(Files.notExists(source)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

try (final var out = new ByteArrayOutputStream()) {
    Files.copy(source, out);
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static Path copy (Path source, Path target, CopyOption... options)

Copiar un archivo a un archivo de destino. (Traducción automática)

final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

Files.writeString(source, "abcd");
System.out.println(Files.exists(source)); // true
System.out.println(Files.exists(target)); // false

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt

final var ret = Files.copy(source, target);
System.out.println(ret); // D:\java-work\target.txt

final var str = Files.readString(target);
System.out.println(str); // abcd

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt
//target.txt
final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

Files.writeString(source, "abcd");
Files.writeString(target, "XYZ");

System.out.println(Files.readString(source)); // abcd
System.out.println(Files.readString(target)); // XYZ

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt
//target.txt

try {
    Files.copy(source, target);
} catch (FileAlreadyExistsException e) {
    System.out.println("FileAlreadyExistsException!");
}

// Result
// ↓
//FileAlreadyExistsException!

final var ret = Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
System.out.println(ret); // D:\java-work\target.txt

System.out.println(Files.readString(source)); // abcd
System.out.println(Files.readString(target)); // abcd

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt
//target.txt
final var source = Path.of("D:", "java-work", "xxx");
System.out.println(source); // D:\java-work\xxx

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

System.out.println(Files.notExists(source)); // true
System.out.println(Files.notExists(target)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

try {
    Files.copy(source, target);
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static Path createDirectories (Path dir, FileAttribute<?>... attrs)

Crea un directorio creando primero todos los directorios principales inexistentes. (Traducción automática)

Please see also createFile(Path path, FileAttribute<?>... attrs) for FileAttribute.

// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.

final var dir = Path.of("D:", "java-work", "dir1");
System.out.println(dir); // D:\java-work\dir1
System.out.println(Files.notExists(dir)); // true

final var ret = Files.createDirectories(dir);
System.out.println(ret); // D:\java-work\dir1

System.out.println(Files.isDirectory(dir)); // true

// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.
//└─dir1
// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.

final var dir = Path.of("D:", "java-work", "dir1", "dir2", "dir3");
System.out.println(dir); // D:\java-work\dir1\dir2\dir3
System.out.println(Files.notExists(dir.getParent().getParent())); // true

final var ret = Files.createDirectories(dir);
System.out.println(ret); // D:\java-work\dir1\dir2\dir3

System.out.println(Files.isDirectory(dir)); // true

// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.
//└─dir1
//    └─dir2
//        └─dir3
// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

System.out.println(Files.notExists(dir)); // true
System.out.println(Files.createDirectories(dir)); // D:\java-work\dir

System.out.println(Files.isDirectory(dir)); // true
System.out.println(Files.createDirectories(dir)); // D:\java-work\dir

// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.
//└─dir
final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);
System.out.println(Files.isDirectory(path)); // false
System.out.println(Files.isRegularFile(path)); // true

// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.
//    aaa.txt

try {
    Files.createDirectories(path);
} catch (FileAlreadyExistsException e) {
    System.out.println("FileAlreadyExistsException!");
}

// Result
// ↓
//FileAlreadyExistsException!

static Path createDirectory (Path dir, FileAttribute<?>... attrs)

Crea un nuevo directorio. (Traducción automática)

Please see also createFile(Path path, FileAttribute<?>... attrs) for FileAttribute.

// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir
System.out.println(Files.notExists(dir)); // true

final var ret = Files.createDirectory(dir);
System.out.println(ret); // // D:\java-work\dir
System.out.println(Files.isDirectory(dir)); // true

// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.
//└─dir

try {
    Files.createDirectory(dir);
} catch (FileAlreadyExistsException e) {
    System.out.println("FileAlreadyExistsException!");
}

// Result
// ↓
//FileAlreadyExistsException!
// --- PowerShell ---
//PS D:\java-work> tree /F
//
//D:.

final var dir = Path.of("D:", "java-work", "dir1", "dir2", "dir3");
System.out.println(dir); // D:\java-work\dir1\dir2\dir3
System.out.println(Files.notExists(dir.getParent())); // true

try {
    Files.createDirectory(dir);
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static Path createFile (Path path, FileAttribute<?>... attrs)

Crea un archivo nuevo y vacío; falla si el archivo ya existe. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final var ret = Files.createFile(path);
System.out.println(ret); // D:\java-work\aaa.txt
System.out.println(Files.size(path)); // 0

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

try {
    Files.createFile(path);
} catch (FileAlreadyExistsException e) {
    System.out.println("FileAlreadyExistsException!");
}

// Result
// ↓
//FileAlreadyExistsException!
final var path = Path.of("D:", "java-work", "dir", "aaa.txt");
System.out.println(path); // D:\java-work\dir\aaa.txt
System.out.println(Files.notExists(path)); // true

final var parent = path.getParent();
System.out.println(parent); // D:\java-work\dir
System.out.println(Files.notExists(parent)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

try {
    Files.createFile(path);
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

The following code runs on Linux.

System.out.println(System.getProperty("os.name")); // Linux

final var ret1 = Files.createFile(Path.of("sample1.txt"));
System.out.println(ret1); // sample1.txt

// --- Linux Terminal ---
//$ ls -l sample1.txt
//-rw-rw-r-- 1 xxxx xxxx 0 ... sample1.txt

final var permissions = PosixFilePermissions.fromString("rw-r-----");
System.out.println(permissions); // [OWNER_READ, OWNER_WRITE, GROUP_READ]

final var ret2 = Files.createFile(
        Path.of("sample2.txt"),
        PosixFilePermissions.asFileAttribute(permissions));
System.out.println(ret2); // sample2.txt

// --- Linux Terminal ---
//$ ls -l sample2.txt
//-rw-r----- 1 xxxx xxxx 0 ... sample2.txt

static Path createLink (Path link, Path existing)

Crea un nuevo enlace (entrada de directorio) para un archivo existente (operación opcional). (Traducción automática)

final var existing = Path.of("D:", "java-work", "existing.txt");
System.out.println(existing); // D:\java-work\existing.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.writeString(existing, "abcd");
System.out.println(Files.exists(existing)); // true
System.out.println(Files.exists(link)); // false

// --- PowerShell ---
//PS D:\java-work> ls -Name
//existing.txt

final var ret = Files.createLink(link, existing);
System.out.println(ret); // D:\java-work\link.txt

System.out.println(Files.readString(existing)); // abcd
System.out.println(Files.readString(link)); // abcd

// --- PowerShell ---
//PS D:\java-work> ls -Name
//existing.txt
//link.txt
//
//PS D:\java-work> ls .\link.txt | Format-List
//...
//Mode           : la---
//LinkType       : HardLink
//Target         :
//VersionInfo    : File:             D:\java-work\link.txt
//...

Files.writeString(existing, "XYZ");

System.out.println(Files.readString(existing)); // XYZ
System.out.println(Files.readString(link)); // XYZ
// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final var existing = Path.of("D:", "java-work", "existing.txt");
System.out.println(existing); // D:\java-work\existing.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

System.out.println(Files.notExists(existing)); // true
System.out.println(Files.notExists(link)); // true

try {
    Files.createLink(link, existing); // NoSuchFileException
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!
final var existing = Path.of("D:", "java-work", "existing.txt");
System.out.println(existing); // D:\java-work\existing.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.createFile(existing);
Files.createFile(link);
System.out.println(Files.exists(existing)); // true
System.out.println(Files.exists(link)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//existing.txt
//link.txt

try {
    Files.createLink(link, existing);
} catch (FileAlreadyExistsException e) {
    System.out.println("FileAlreadyExistsException!");
}

// Result
// ↓
//FileAlreadyExistsException!

static Path createSymbolicLink (Path link, Path target, FileAttribute<?>... attrs)

Crea un enlace simbólico a un objetivo (operación opcional). (Traducción automática)

Creating a symbolic link may require administrator privileges.

Please see also createFile(Path path, FileAttribute<?>... attrs) for FileAttribute.

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.writeString(target, "abcd");
System.out.println(Files.exists(target)); // true
System.out.println(Files.exists(link)); // false

// --- PowerShell ---
//PS D:\java-work> ls -Name
//target.txt

final var ret = Files.createSymbolicLink(link, target);
System.out.println(ret); // D:\java-work\link.txt

System.out.println(Files.readString(target)); // abcd
System.out.println(Files.readString(link)); // abcd

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//la---  ...        0 link.txt -> D:\java-work\target.txt
//-a---  ...        4 target.txt
//
//PS D:\java-work> ls .\link.txt | Format-List
//...
//Mode           : la---
//LinkType       : SymbolicLink
//Target         : D:\java-work\target.txt
//VersionInfo    : File:             D:\java-work\link.txt
//...

Files.writeString(target, "XYZ");

System.out.println(Files.readString(target)); // XYZ
System.out.println(Files.readString(link)); // XYZ
final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

System.out.println(Files.notExists(target)); // true
System.out.println(Files.notExists(link)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

// You can also create empty links.
final var ret = Files.createSymbolicLink(link, target);
System.out.println(ret); // D:\java-work\link.txt

System.out.println(Files.notExists(target)); // true
System.out.println(Files.notExists(link)); // true
System.out.println(Files.isSymbolicLink(link)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//la---  ...        0 link.txt -> D:\java-work\target.txt
final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.createFile(target);
Files.createFile(link);
System.out.println(Files.exists(target)); // true
System.out.println(Files.exists(link)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//link.txt
//target.txt

try {
    Files.createSymbolicLink(link, target);
} catch (FileAlreadyExistsException e) {
    System.out.println("FileAlreadyExistsException!");
}

// Result
// ↓
//FileAlreadyExistsException!

static Path createTempDirectory (String prefix, FileAttribute<?>... attrs)

Crea un nuevo directorio en el directorio de archivos temporales predeterminado, utilizando el prefijo dado para generar su nombre. (Traducción automática)

Please see also createFile(Path path, FileAttribute<?>... attrs) for FileAttribute.

final var ret1 = Files.createTempDirectory("prefix");
System.out.println(ret1); // C:\Users\xxx\AppData\Local\Temp\prefix6089636834939322082

final var ret2 = Files.createTempDirectory("abcd-");
System.out.println(ret2); // C:\Users\xxx\AppData\Local\Temp\abcd-6998169258402534775

final var ret3 = Files.createTempDirectory(null);
System.out.println(ret3); // C:\Users\xxx\AppData\Local\Temp\7916867536894745055

static Path createTempDirectory (Path dir, String prefix, FileAttribute<?>... attrs)

Crea un nuevo directorio en el directorio especificado, utilizando el prefijo dado para generar su nombre. (Traducción automática)

Please see also createFile(Path path, FileAttribute<?>... attrs) for FileAttribute.

final var dir = Path.of("D:", "java-work");
System.out.println(dir); // D:\java-work

final var ret1 = Files.createTempDirectory(dir, "prefix");
System.out.println(ret1); // D:\java-work\prefix18208067467997933175

final var ret2 = Files.createTempDirectory(dir, "abcd-");
System.out.println(ret2); // D:\java-work\abcd-521471602431667304

final var ret3 = Files.createTempDirectory(dir, null);
System.out.println(ret3); // D:\java-work\2640746303774778924

static Path createTempFile (String prefix, String suffix, FileAttribute<?>... attrs)

Crea un archivo vacío en el directorio de archivos temporales predeterminado, utilizando el prefijo y sufijo dados para generar su nombre. (Traducción automática)

Please see also createFile(Path path, FileAttribute<?>... attrs) for FileAttribute.

final var ret1 = Files.createTempFile("prefix-", "-suffix");
System.out.println(ret1); // C:\Users\xxx\AppData\Local\Temp\prefix-9091722447586283597-suffix

final var ret2 = Files.createTempFile("abcd-", ".txt");
System.out.println(ret2); // C:\Users\xxx\AppData\Local\Temp\abcd-13867786695402679957.txt

final var ret3 = Files.createTempFile("prefix-", null);
System.out.println(ret3); // C:\Users\xxx\AppData\Local\Temp\prefix-17221573028074243598.tmp

final var ret4 = Files.createTempFile(null, "-suffix");
System.out.println(ret4); // C:\Users\xxx\AppData\Local\Temp\11809310207624726987-suffix

final var ret5 = Files.createTempFile(null, null);
System.out.println(ret5); // C:\Users\xxx\AppData\Local\Temp\13779039011143750638.tmp

static Path createTempFile (Path dir, String prefix, String suffix, FileAttribute<?>... attrs)

Crea un nuevo archivo vacío en el directorio especificado, utilizando las cadenas de prefijo y sufijo dadas para generar su nombre. (Traducción automática)

Please see also createFile(Path path, FileAttribute<?>... attrs) for FileAttribute.

final var dir = Path.of("D:", "java-work");
System.out.println(dir); // D:\java-work

final var ret1 = Files.createTempFile(dir, "prefix-", "-suffix");
System.out.println(ret1); // D:\java-work\prefix-10113412430119575991-suffix

final var ret2 = Files.createTempFile(dir, "abcd-", ".txt");
System.out.println(ret2); // D:\java-work\abcd-169546499978120138.txt

final var ret3 = Files.createTempFile(dir, "prefix-", null);
System.out.println(ret3); // D:\java-work\prefix-9437871265568200345.tmp

final var ret4 = Files.createTempFile(dir, null, "-suffix");
System.out.println(ret4); // D:\java-work\9337658086830323119-suffix

final var ret5 = Files.createTempFile(dir, null, null);
System.out.println(ret5); // D:\java-work\13108613127478405635.tmp

static void delete (Path path)

Elimina un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

Files.createFile(path);
Files.createDirectory(dir);

System.out.println(Files.isRegularFile(path)); // true
System.out.println(Files.isDirectory(dir)); // true

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir
//-a--- aaa.txt

Files.delete(path);
System.out.println(Files.notExists(path)); // true

//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir

Files.delete(dir);
System.out.println(Files.notExists(dir)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>
// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(Files.notExists(path)); // true

try {
    Files.delete(path);
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!
// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//└─dir
//        aaa.txt
//        bbb.txt

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir
System.out.println(Files.isDirectory(dir)); // true

try {
    Files.delete(dir);
} catch (DirectoryNotEmptyException e) {
    System.out.println("DirectoryNotEmptyException!");
}

// Result
// ↓
//DirectoryNotEmptyException!

static boolean deleteIfExists (Path path)

Elimina un archivo si existe. (Traducción automática)

Please see also : delete(Path path)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);
System.out.println(Files.exists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

System.out.println(Files.deleteIfExists(path)); // true
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//<No files / directories>

System.out.println(Files.deleteIfExists(path)); // false

static boolean exists (Path path, LinkOption... options)

Comprueba si existe un archivo. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createDirectory(dir);
Files.createFile(file);

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir
//-a--- aaa.txt

System.out.println(Files.isDirectory(dir)); // true
System.out.println(Files.exists(dir)); // true

System.out.println(Files.isRegularFile(file)); // true
System.out.println(Files.exists(file)); // true

System.out.println(Files.exists(nonExistentPath)); // false
final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

// Intentionally creates an empty link.
Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//la---  ...        0 link.txt -> D:\java-work\target.txt

System.out.println(Files.exists(target)); // false

System.out.println(Files.isSymbolicLink(link)); // true
System.out.println(Files.exists(link)); // false
System.out.println(Files.exists(link, LinkOption.NOFOLLOW_LINKS)); // true

static Stream<Path> find (Path start, int maxDepth, BiPredicate<Path,BasicFileAttributes> matcher, FileVisitOption... options)

Devuelve un Stream que se rellena de forma diferida con Path buscando archivos en un árbol de archivos cuya raíz está en un archivo de inicio determinado. (Traducción automática)

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa.txt
//│  bbb.txt
//│
//├─dir1
//│  │  ccc.txt
//│  │  ddd.txt
//│  │
//│  └─dir1-2
//│          eee.txt
//│          fff.txt
//│
//└─dir2
//        ggg.txt
//        hhh.txt

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

System.out.println("maxDepth : 3");
try (final var stream = Files.find(start, 3, (_, _) -> true)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//maxDepth : 3
//D:\java-work
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\dir1
//D:\java-work\dir1\ccc.txt
//D:\java-work\dir1\ddd.txt
//D:\java-work\dir1\dir1-2
//D:\java-work\dir1\dir1-2\eee.txt
//D:\java-work\dir1\dir1-2\fff.txt
//D:\java-work\dir2
//D:\java-work\dir2\ggg.txt
//D:\java-work\dir2\hhh.txt

System.out.println("maxDepth : 2");
try (final var stream = Files.find(start, 2, (_, _) -> true)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//maxDepth : 2
//D:\java-work
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\dir1
//D:\java-work\dir1\ccc.txt
//D:\java-work\dir1\ddd.txt
//D:\java-work\dir1\dir1-2
//D:\java-work\dir2
//D:\java-work\dir2\ggg.txt
//D:\java-work\dir2\hhh.txt

System.out.println("maxDepth : 1");
try (final var stream = Files.find(start, 1, (_, _) -> true)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//maxDepth : 1
//D:\java-work
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\dir1
//D:\java-work\dir2

System.out.println("maxDepth : 0");
try (final var stream = Files.find(start, 0, (_, _) -> true)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//maxDepth : 0
//D:\java-work
// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa.txt
//│  bbb.txt
//│
//├─dir1
//│  │  ccc.txt
//│  │  ddd.txt
//│  │
//│  └─dir1-2
//│          eee.txt
//│          fff.txt
//│
//└─dir2
//        ggg.txt
//        hhh.txt

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

System.out.println("matcher : isDirectory");
try (final var stream = Files.find(start, Integer.MAX_VALUE,
        (_, basicFileAttributes) -> basicFileAttributes.isDirectory())) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//matcher : isDirectory
//D:\java-work
//D:\java-work\dir1
//D:\java-work\dir1\dir1-2
//D:\java-work\dir2

System.out.println("matcher : isRegularFile");
try (final var stream = Files.find(start, Integer.MAX_VALUE,
        (_, basicFileAttributes) -> basicFileAttributes.isRegularFile())) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//matcher : isRegularFile
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\dir1\ccc.txt
//D:\java-work\dir1\ddd.txt
//D:\java-work\dir1\dir1-2\eee.txt
//D:\java-work\dir1\dir1-2\fff.txt
//D:\java-work\dir2\ggg.txt
//D:\java-work\dir2\hhh.txt
// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//├─dir
//│      aaa.txt
//│      bbb.txt
//│
//└─link-dir
//        aaa.txt
//        bbb.txt
//
//PS D:\java-work> ls
//
//    Directory: D:\java-work
//
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//l----  ...          link-dir -> D:\java-work\dir

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

try (final var stream = Files.find(start, Integer.MAX_VALUE,
        (_, _) -> true)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//D:\java-work
//D:\java-work\dir
//D:\java-work\dir\aaa.txt
//D:\java-work\dir\bbb.txt
//D:\java-work\link-dir

System.out.println("FileVisitOption : FOLLOW_LINKS");
try (final var stream = Files.find(start, Integer.MAX_VALUE,
        (_, _) -> true, FileVisitOption.FOLLOW_LINKS)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//FileVisitOption : FOLLOW_LINKS
//D:\java-work
//D:\java-work\dir
//D:\java-work\dir\aaa.txt
//D:\java-work\dir\bbb.txt
//D:\java-work\link-dir
//D:\java-work\link-dir\aaa.txt
//D:\java-work\link-dir\bbb.txt
final var start = Path.of("D:", "java-work", "xxx");
System.out.println(start); // D:\java-work\xxx
System.out.println(Files.notExists(start)); // true

try (var _ = Files.find(start, Integer.MAX_VALUE, (_, _) -> true)) {
    System.out.println("No errors");
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static Object getAttribute (Path path, String attribute, LinkOption... options)

Lee el valor de un atributo de archivo. (Traducción automática)

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var hidden = Path.of("D:", "java-work", "hidden.txt");
System.out.println(hidden); // D:\java-work\hidden.txt

Files.writeString(file, "abcd");

Files.writeString(hidden, "1234567890");
Files.setAttribute(hidden, "dos:hidden", true);

// --- PowerShell ---
//PS D:\java-work> ls -Force | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a---      4 aaa.txt
//-a-h-     10 hidden.txt

System.out.println(Files.getAttribute(file, "size")); // 4
System.out.println(Files.getAttribute(hidden, "size")); // 10

System.out.println(Files.getAttribute(file, "dos:hidden")); // false
System.out.println(Files.getAttribute(hidden, "dos:hidden")); // true
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.writeString(target, "abcd");
Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//-a---  ...        4 aaa.txt
//la---  ...        0 link.txt -> D:\java-work\aaa.txt

System.out.println(Files.getAttribute(link, "size")); // 4
System.out.println(Files.getAttribute(link, "size", LinkOption.NOFOLLOW_LINKS)); // 0

static <V extends FileAttributeView> V getFileAttributeView (Path path, Class<V> type, LinkOption... options)

Devuelve una vista de atributos de archivo de un tipo determinado. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.writeString(path, "abcd");

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a---      4 aaa.txt

final var basicView = Files.getFileAttributeView(path, BasicFileAttributeView.class);
if (basicView != null) {
    final var attrs = basicView.readAttributes();
    System.out.println(attrs.size()); // 4
    System.out.println(attrs.isRegularFile()); // true
    System.out.println(attrs.isDirectory()); // false
}
final var hidden = Path.of("D:", "java-work", "hidden.txt");
System.out.println(hidden); // D:\java-work\hidden.txt

Files.writeString(hidden, "abcd");
Files.setAttribute(hidden, "dos:hidden", true);

// --- PowerShell ---
//PS D:\java-work> ls -Force | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a-h-      4 hidden.txt

final var dosView = Files.getFileAttributeView(hidden, DosFileAttributeView.class);
if (dosView != null) {
    final var attrs = dosView.readAttributes();
    System.out.println(attrs.size()); // 4
    System.out.println(attrs.isHidden()); // true
    System.out.println(attrs.isReadOnly()); // false

    dosView.setReadOnly(true);

    // --- PowerShell ---
    //PS D:\java-work> ls -Force | Format-Table -Property Mode, Length, Name
    //
    //Mode  Length Name
    //----  ------ ----
    //-arh-      4 hidden.txt
}
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.writeString(target, "abcd");
Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//-a---  ...        4 aaa.txt
//la---  ...        0 link.txt -> D:\java-work\aaa.txt

final var basicView = Files.getFileAttributeView(
        link, BasicFileAttributeView.class);
if (basicView != null) {
    final var attrs = basicView.readAttributes();
    System.out.println(attrs.size()); // 4
    System.out.println(attrs.isRegularFile()); // true
    System.out.println(attrs.isSymbolicLink()); // false
}

final var basicView2 = Files.getFileAttributeView(
        link, BasicFileAttributeView.class, LinkOption.NOFOLLOW_LINKS);
if (basicView2 != null) {
    final var attrs = basicView2.readAttributes();
    System.out.println(attrs.size()); // 0
    System.out.println(attrs.isRegularFile()); // false
    System.out.println(attrs.isSymbolicLink()); // true
}

static FileStore getFileStore (Path path)

Devuelve el FileStore que representa el almacén de archivos donde se encuentra un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work");
System.out.println(path); // D:\java-work

final var store = Files.getFileStore(path);

System.out.println(store.type()); // NTFS
System.out.println(store.getBlockSize()); // 512

static FileTime getLastModifiedTime (Path path, LinkOption... options)

Devuelve la hora de la última modificación de un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);

final var zoneId = ZoneId.systemDefault();
System.out.println(zoneId); // Asia/Tokyo

final var ret = Files.setLastModifiedTime(path, FileTime.from(
        ZonedDateTime.of(2100, 1, 1, 0, 0, 0, 0, zoneId).toInstant()));
System.out.println(ret); // D:\java-work\aaa.txt

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property LastWriteTime, Name
//
//LastWriteTime      Name
//-------------      ----
//2100/01/01 0:00:00 aaa.txt

// FileTime is UTC.
final var fileTime = Files.getLastModifiedTime(path);
System.out.println(fileTime); // 2099-12-31T15:00:00Z

final var zonedDateTime = ZonedDateTime.ofInstant(fileTime.toInstant(), zoneId);
System.out.println(zonedDateTime); // 2100-01-01T00:00+09:00[Asia/Tokyo]
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

final var zoneId = ZoneId.systemDefault();
System.out.println(zoneId); // Asia/Tokyo

final var zonedDateTime = ZonedDateTime.of(2100, 1, 1, 0, 0, 0, 0, zoneId);
System.out.println(zonedDateTime); // 2100-01-01T00:00+09:00[Asia/Tokyo]

Files.createFile(target);
Files.setLastModifiedTime(target, FileTime.from(zonedDateTime.toInstant()));

Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode                 LastWriteTime         Length Name
//----                 -------------         ------ ----
//-a---          2100/01/01     0:00              0 aaa.txt
//la---          2024/10/19    16:31              0 link.txt -> D:\java-work\aaa.txt

final var ret1 = Files.getLastModifiedTime(link);
System.out.println(ret1); // 2099-12-31T15:00:00Z

final var ret2 = Files.getLastModifiedTime(link, LinkOption.NOFOLLOW_LINKS);
System.out.println(ret2); // 2024-10-19T07:31:55.9393338Z

static UserPrincipal getOwner (Path path, LinkOption... options)

Devuelve el propietario de un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);

final var service = path.getFileSystem().getUserPrincipalLookupService();
final var newOwner = service.lookupPrincipalByName("test-user");

final var ret1 = Files.setOwner(path, newOwner);
System.out.println(ret1); // D:\java-work\aaa.txt

// --- PowerShell ---
//PS D:\java-work> Get-Acl .\aaa.txt
//...
//Path    Owner           Access
//----    -----           ------
//aaa.txt MY-PC\test-user BUILTIN\Administrators Allow  FullControl…

final var ret2 = Files.getOwner(path);
System.out.println(ret2); // MY-PC\test-user (User)
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls | Get-Acl
//..
//Path     Owner                    Access
//----     -----                    ------
//aaa.txt  MY-PC\test-user          BUILTIN\Administrators Allow  FullControl…
//link.txt BUILTIN\Administrators   BUILTIN\Administrators Allow  FullControl…

final var ret1 = Files.getOwner(link);
System.out.println(ret1); // MY-PC\test-user (User)

final var ret2 = Files.getOwner(link, LinkOption.NOFOLLOW_LINKS);
System.out.println(ret2); // BUILTIN\Administrators (Alias)

static Set<PosixFilePermission> getPosixFilePermissions (Path path, LinkOption... options)

Devuelve los permisos de archivo POSIX de un archivo. (Traducción automática)

The following code runs on Linux.

System.out.println(System.getProperty("os.name")); // Linux

// --- Linux Terminal ---
//$ ls -l sample.txt
//-rw-rw-r-- 1 xxxx xxxx 0 ... sample.txt

final var path = Path.of("sample.txt");

final var permissions = Files.getPosixFilePermissions(path);
System.out.println(PosixFilePermissions.toString(permissions)); // rw-rw-r--
System.out.println(System.getProperty("os.name")); // Linux

// --- Linux Terminal ---
//$ ls -l
//lrwxrwxrwx 1 xxxx xxxx 10 ... link.txt -> sample.txt
//-rw-rw-r-- 1 xxxx xxxx  0 ... sample.txt

final var path = Path.of("link.txt");

final var permissions1 = Files.getPosixFilePermissions(path);
System.out.println(PosixFilePermissions.toString(permissions1)); // rw-rw-r--

final var permissions2 = Files.getPosixFilePermissions(path, LinkOption.NOFOLLOW_LINKS);
System.out.println(PosixFilePermissions.toString(permissions2)); // rwxrwxrwx

static boolean isDirectory (Path path, LinkOption... options)

Comprueba si un archivo es un directorio. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link-dir");
System.out.println(link); // D:\java-work\link-dir

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createDirectory(dir);
Files.createFile(file);
Files.createSymbolicLink(link, dir);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//l----  ...          link-dir -> D:\java-work\dir
//-a---  ...        0 aaa.txt

System.out.println(Files.isDirectory(dir)); // true
System.out.println(Files.isDirectory(file)); // false

System.out.println(Files.isDirectory(link)); // true
System.out.println(Files.isDirectory(link, LinkOption.NOFOLLOW_LINKS)); // false

System.out.println(Files.isDirectory(nonExistentPath)); // false

static boolean isExecutable (Path path)

Comprueba si un archivo es ejecutable. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var exe = Path.of("D:", "java-work", "java.exe");
System.out.println(exe); // D:\java-work\java.exe

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createDirectory(dir);
Files.createFile(file);
Files.copy(Path.of(System.getProperty("java.home"), "bin", "java.exe"), exe);

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir
//-a--- aaa.txt
//-a--- java.exe

// On Windows.
System.out.println(Files.isExecutable(dir)); // true
System.out.println(Files.isExecutable(file)); // true
System.out.println(Files.isExecutable(exe)); // true
System.out.println(Files.isExecutable(nonExistentPath)); // false

The following code runs on Linux.

System.out.println(System.getProperty("os.name")); // Linux

final var shFile = Path.of("sample.sh");
final var txtFile = Path.of("sample.txt");

// --- Linux Terminal ---
//$ ls -l
//-rwxrwxr-x 1 xxxx xxxx    0 ... sample.sh
//-rw-rw-r-- 1 xxxx xxxx    0 ... sample.txt

System.out.println(Files.isExecutable(shFile)); // true
System.out.println(Files.isExecutable(txtFile)); // false

static boolean isHidden (Path path)

Indica si un archivo se considera oculto o no. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var hidden = Path.of("D:", "java-work", "hidden.txt");
System.out.println(hidden); // D:\java-work\hidden.txt

Files.createDirectory(dir);
Files.createFile(file);

Files.createFile(hidden);
Files.setAttribute(hidden, "dos:hidden", true);

// --- PowerShell ---
//PS D:\java-work> ls -Force | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir
//-a--- aaa.txt
//-a-h- hidden.txt

System.out.println(Files.isHidden(dir)); // false
System.out.println(Files.isHidden(file)); // false
System.out.println(Files.isHidden(hidden)); // true
final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx
System.out.println(Files.notExists(nonExistentPath)); // true

try {
    Files.isHidden(nonExistentPath);
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static boolean isReadable (Path path)

Comprueba si un archivo es legible. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createDirectory(dir);
Files.createFile(file);

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir
//-a--- aaa.txt

System.out.println(Files.isReadable(dir)); // true
System.out.println(Files.isReadable(file)); // true
System.out.println(Files.isReadable(nonExistentPath)); // false
// The non-readable.txt has read permission denied.
final var nonReadableFile = Path.of("D:", "java-work", "non-readable.txt");
System.out.println(nonReadableFile); // D:\java-work\non-readable.txt

// --- PowerShell ---
//PS D:\java-work> Get-Acl .\non-readable.txt
//...
//Path             Owner           Access
//----             -----           ------
//non-readable.txt MY-PC\test-user BUILTIN\Administrators Deny  ReadData…

System.out.println(Files.isReadable(nonReadableFile)); // false

static boolean isRegularFile (Path path, LinkOption... options)

Comprueba si un archivo es un archivo normal con contenido opaco. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createDirectory(dir);
Files.createFile(file);
Files.createSymbolicLink(link, file);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//-a---  ...        0 aaa.txt
//la---  ...        0 link.txt -> D:\java-work\aaa.txt

System.out.println(Files.isDirectory(dir)); // true
System.out.println(Files.isRegularFile(dir)); // false

System.out.println(Files.exists(file)); // true
System.out.println(Files.isRegularFile(file)); // true

System.out.println(Files.isSymbolicLink(link)); // true
System.out.println(Files.isRegularFile(link)); // true
System.out.println(Files.isRegularFile(link, LinkOption.NOFOLLOW_LINKS)); // false

System.out.println(Files.notExists(nonExistentPath)); // true
System.out.println(Files.isRegularFile(nonExistentPath)); // false

static boolean isSameFile (Path path, Path path2)

Comprueba si dos rutas ubican el mismo archivo. (Traducción automática)

final var file1 = Path.of("D:", "java-work", "aaa1.txt");
System.out.println(file1); // D:\java-work\aaa1.txt

final var file2 = Path.of("D:", "java-work", "aaa2.txt");
System.out.println(file2); // D:\java-work\aaa2.txt

final var file3 = Path.of("D:", "java-work", "bbb.txt");
System.out.println(file3); // D:\java-work\bbb.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.writeString(file1, "abcd");
Files.writeString(file2, "abcd");
Files.writeString(file3, "XYZ");
Files.createSymbolicLink(link, file1);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//-a---  ...        4 aaa1.txt
//-a---  ...        4 aaa2.txt
//-a---  ...        3 bbb.txt
//la---  ...        0 link.txt -> D:\java-work\aaa1.txt

System.out.println(Files.readString(file1)); // abcd
System.out.println(Files.readString(file2)); // abcd
System.out.println(Files.readString(file3)); // XYZ
System.out.println(Files.readString(link)); // abcd

System.out.println(Files.isSameFile(file1, file1)); // true
System.out.println(Files.isSameFile(file1, file2)); // false
System.out.println(Files.isSameFile(file1, file3)); // false
System.out.println(Files.isSameFile(file1, link)); // true
final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createFile(file);

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

try {
    Files.isSameFile(file, nonExistentPath);
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static boolean isSymbolicLink (Path path)

Comprueba si un archivo es un enlace simbólico. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createDirectory(dir);
Files.createFile(file);
Files.createSymbolicLink(link, file);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//-a---  ...        0 aaa.txt
//la---  ...        0 link.txt -> D:\java-work\aaa.txt

System.out.println(Files.isDirectory(dir)); // true
System.out.println(Files.isSymbolicLink(dir)); // false

System.out.println(Files.isRegularFile(file)); // true
System.out.println(Files.isSymbolicLink(file)); // false

System.out.println(Files.exists(link)); // true
System.out.println(Files.isSymbolicLink(link)); // true

System.out.println(Files.notExists(nonExistentPath)); // true
System.out.println(Files.isSymbolicLink(nonExistentPath)); // false

static boolean isWritable (Path path)

Comprueba si un archivo se puede escribir. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var readOnlyFile = Path.of("D:", "java-work", "read-only.txt");
System.out.println(readOnlyFile); // D:\java-work\read-only.txt

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createDirectory(dir);
Files.createFile(file);

Files.createFile(readOnlyFile);
Files.setAttribute(readOnlyFile, "dos:readonly", true);

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir
//-a--- aaa.txt
//-ar-- read-only.txt

System.out.println(Files.isDirectory(dir)); // true
System.out.println(Files.isWritable(dir)); // true

System.out.println(Files.isRegularFile(file)); // true
System.out.println(Files.isWritable(file)); // true

System.out.println(Files.isRegularFile(readOnlyFile)); // true
System.out.println(Files.isWritable(readOnlyFile)); // false

System.out.println(Files.notExists(nonExistentPath)); // true
System.out.println(Files.isWritable(nonExistentPath)); // false

static Stream<String> lines (Path path)

Lee todas las líneas de un archivo como un Stream. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.writeString(path, """
        abcd
        XYZ
        12345
        """);

try (final var lines = Files.lines(path)) {
    System.out.println(lines.toList()); // [abcd, XYZ, 12345]
}
final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);
System.out.println(Files.size(path)); // 0

try (final var stream = Files.lines(path)) {
    System.out.println(stream.toList()); // []
}

static Stream<String> lines (Path path, Charset cs)

Lee todas las líneas de un archivo como un Stream. (Traducción automática)

Please see also : lines(Path path)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path);

final var csq = """
        abcd
        12345
        〇△□×
        """;

Files.writeString(path, csq, StandardCharsets.UTF_8);

try (final var stream = Files.lines(path, StandardCharsets.UTF_8)) {
    System.out.println(stream.toList()); // [abcd, 12345, 〇△□×]
}

try (final var stream = Files.lines(path, Charset.forName("Shift_JIS"))) {
    var _ = stream.toList();
} catch (UncheckedIOException e) {
    System.out.println("UncheckedIOException! : " + e.getMessage());
}

// Result
// ↓
//UncheckedIOException! : java.nio.charset.MalformedInputException: Input length = 1
final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path);

final var csq = """
        abcd
        12345
        〇△□×
        """;

Files.writeString(path, csq, Charset.forName("Shift_JIS"));

try (final var stream = Files.lines(path, Charset.forName("Shift_JIS"))) {
    System.out.println(stream.toList()); // [abcd, 12345, 〇△□×]
}

try (final var stream = Files.lines(path, StandardCharsets.UTF_8)) {
    var _ = stream.toList();
} catch (UncheckedIOException e) {
    System.out.println("UncheckedIOException! : " + e.getMessage());
}

// Result
// ↓
//UncheckedIOException! : java.nio.charset.MalformedInputException: Input length = 1

static Stream<Path> list (Path dir)

Devuelve un Stream poblado de forma diferida, cuyos elementos son las entradas en el directorio. (Traducción automática)

final var dir1 = Path.of("D:", "java-work");
System.out.println(dir1); // D:\java-work

Files.createFile(dir1.resolve(Path.of("aaa.txt")));
Files.createFile(dir1.resolve(Path.of("bbb.txt")));

final var dir2 = dir1.resolve("dir");
System.out.println(dir2); // D:\java-work\dir

Files.createDirectory(dir2);
Files.createFile(dir2.resolve(Path.of("ccc.txt")));
Files.createFile(dir2.resolve(Path.of("ddd.txt")));

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa.txt
//│  bbb.txt
//│
//└─dir
//        ccc.txt
//        ddd.txt

try (final var stream = Files.list(dir1)) {
    stream.forEach(System.out::println);

    // Result
    // ↓
    //D:\java-work\aaa.txt
    //D:\java-work\bbb.txt
    //D:\java-work\dir
}

try (final var stream = Files.list(dir2)) {
    stream.forEach(System.out::println);

    // Result
    // ↓
    //D:\java-work\dir\ccc.txt
    //D:\java-work\dir\ddd.txt
}
final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

Files.createFile(file);
System.out.println(Files.isRegularFile(file)); // true

try (var _ = Files.list(file)) {
    System.out.println("No errors");
} catch (NotDirectoryException e) {
    System.out.println("NotDirectoryException!");
}

// Result
// ↓
//NotDirectoryException!

static long mismatch (Path path, Path path2)

Busca y devuelve la posición del primer byte no coincidente en el contenido de dos archivos, o -1L si no hay ninguna coincidencia. (Traducción automática)

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

final var file1 = Path.of("D:", "java-work", "aaa1.txt");
final var file2 = Path.of("D:", "java-work", "aaa2.txt");
final var file3 = Path.of("D:", "java-work", "aaa3.txt");
final var file4 = Path.of("D:", "java-work", "aaa4.txt");
final var file5 = Path.of("D:", "java-work", "aaa5.txt");
final var file6 = Path.of("D:", "java-work", "aaa6.txt");

Files.write(target, new byte[]{0, 1, 2});

Files.write(file1, new byte[]{0, 1, 2});
Files.write(file2, new byte[]{0, 1, 102});
Files.write(file3, new byte[]{0, 101, 102});
Files.write(file4, new byte[]{100, 101, 102});
Files.write(file5, new byte[]{});
Files.write(file6, new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9});

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa1.txt
//aaa2.txt
//aaa3.txt
//aaa4.txt
//aaa5.txt
//aaa6.txt
//target.txt

System.out.println(Arrays.toString(Files.readAllBytes(target))); // [0, 1, 2]

System.out.println(Arrays.toString(Files.readAllBytes(file1))); // [0, 1, 2]
System.out.println(Files.mismatch(target, file1)); // -1

System.out.println(Arrays.toString(Files.readAllBytes(file2))); // [0, 1, 102]
System.out.println(Files.mismatch(target, file2)); // 2

System.out.println(Arrays.toString(Files.readAllBytes(file3))); // [0, 101, 102]
System.out.println(Files.mismatch(target, file3)); // 1

System.out.println(Arrays.toString(Files.readAllBytes(file4))); // [100, 101, 102]
System.out.println(Files.mismatch(target, file4)); // 0

System.out.println(Arrays.toString(Files.readAllBytes(file5))); // []
System.out.println(Files.mismatch(target, file5)); // 0

final var ret = Files.readAllBytes(file6);
System.out.println(Arrays.toString(ret)); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
System.out.println(Files.mismatch(target, file6)); // 3

static Path move (Path source, Path target, CopyOption... options)

Mover o renombrar un archivo a un archivo de destino. (Traducción automática)

final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

Files.writeString(source, "abcd");

System.out.println(Files.exists(source)); // true
System.out.println(Files.exists(target)); // false

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a---      4 source.txt

System.out.println(Files.move(source, target)); // D:\java-work\target.txt

System.out.println(Files.exists(source)); // false
System.out.println(Files.exists(target)); // true

System.out.println(Files.readString(target)); // abcd

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a---      4 target.txt
final var source = Path.of("D:", "java-work", "source-dir");
System.out.println(source); // D:\java-work\source-dir

final var target = Path.of("D:", "java-work", "target-dir");
System.out.println(target); // D:\java-work\target-dir

Files.createDirectory(source);
Files.createFile(source.resolve(Path.of("aaa.txt")));
Files.createFile(source.resolve(Path.of("bbb.txt")));

System.out.println(Files.exists(source)); // true
System.out.println(Files.exists(target)); // false

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//└─source-dir
//        aaa.txt
//        bbb.txt

System.out.println(Files.move(source, target)); // D:\java-work\target-dir

System.out.println(Files.exists(source)); // false
System.out.println(Files.exists(target)); // true

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//└─target-dir
//        aaa.txt
//        bbb.txt
final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

Files.createFile(source);
System.out.println(Files.exists(source)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt

System.out.println(Files.move(source, source)); // D:\java-work\source.txt

System.out.println(Files.exists(source)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt
final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

Files.createFile(source);
Files.createFile(target);

System.out.println(Files.exists(source)); // true
System.out.println(Files.exists(target)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Name
//source.txt
//target.txt

try {
    Files.move(source, target);
} catch (FileAlreadyExistsException e) {
    System.out.println("FileAlreadyExistsException!");
}

// Result
// ↓
//FileAlreadyExistsException!
// An example of moving a file to a different FileStore.

final var source = Path.of("D:", "java-work", "source.txt");
System.out.println(source); // D:\java-work\source.txt

final var target = Path.of("R:", "java-work", "target.txt");
System.out.println(target); // R:\java-work\target.txt

Files.createFile(source);

System.out.println(Files.exists(source)); // true
System.out.println(Files.exists(target)); // false

System.out.println(Files.move(source, target)); // R:\java-work\target.txt

System.out.println(Files.exists(source)); // false
System.out.println(Files.exists(target)); // true
// An example of moving a directory to a different FileStore.

final var source = Path.of("D:", "java-work", "source-dir");
System.out.println(source); // D:\java-work\source-dir

final var target = Path.of("R:", "java-work", "target-dir");
System.out.println(target); // R:\java-work\target-dir

Files.createDirectory(source);
Files.createFile(source.resolve(Path.of("aaa.txt")));

System.out.println(Files.exists(source)); // true
System.out.println(Files.exists(target)); // false

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//└─source-dir
//        aaa.txt

try {
    Files.move(source, target);
} catch (DirectoryNotEmptyException e) {
    System.out.println("DirectoryNotEmptyException!");
}

// Result
// ↓
//DirectoryNotEmptyException!

static BufferedReader newBufferedReader (Path path)

Abre un archivo para lectura y devuelve un BufferedReader para leer el texto del archivo de manera eficiente. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.writeString(path, """
        abcd
        XYZ
        12345
        """);

try (final var reader = Files.newBufferedReader(path)) {
    System.out.println(reader.readLine()); // abcd
    System.out.println(reader.readLine()); // XYZ
    System.out.println(reader.readLine()); // 12345
}

static BufferedReader newBufferedReader (Path path, Charset cs)

Abre un archivo para lectura y devuelve un BufferedReader que puede usarse para leer texto del archivo de manera eficiente. (Traducción automática)

Please see also : newBufferedReader(Path path)

final var utf8 = Path.of("D:", "java-work", "aaa.txt");
System.out.println(utf8); // D:\java-work\aaa.txt

Files.writeString(utf8, "〇△□×", StandardCharsets.UTF_8);

try (final var reader = Files.newBufferedReader(utf8, StandardCharsets.UTF_8)) {
    System.out.println(reader.readLine()); // 〇△□×
}

try (final var reader = Files.newBufferedReader(utf8, Charset.forName("Shift_JIS"))) {
    reader.readLine();
} catch (MalformedInputException e) {
    System.out.println("MalformedInputException!");
}

// Result
// ↓
//MalformedInputException!
final var sjis = Path.of("D:", "java-work", "aaa.txt");
System.out.println(sjis); // D:\java-work\aaa.txt

Files.writeString(sjis, "〇△□×", Charset.forName("Shift_JIS"));

try (final var reader = Files.newBufferedReader(sjis, Charset.forName("Shift_JIS"))) {
    System.out.println(reader.readLine()); // 〇△□×
}

try (final var reader = Files.newBufferedReader(sjis, StandardCharsets.UTF_8)) {
    reader.readLine();
} catch (MalformedInputException e) {
    System.out.println("MalformedInputException!");
}

// Result
// ↓
//MalformedInputException!

static BufferedWriter newBufferedWriter (Path path, Charset cs, OpenOption... options)

Abre o crea un archivo para escribir y devuelve un BufferedWriter que puede usarse para escribir texto en el archivo de manera eficiente. (Traducción automática)

Please see also : newBufferedWriter(Path path, OpenOption... options)

final var sjis = Path.of("D:", "java-work", "aaa.txt");
System.out.println(sjis); // D:\java-work\aaa.txt

try (final var writer = Files.newBufferedWriter(sjis, Charset.forName("Shift_JIS"))) {
    writer.write("〇△□×");
}

System.out.println(Files.readString(sjis, Charset.forName("Shift_JIS"))); // 〇△□×

try {
    Files.readString(sjis, StandardCharsets.UTF_8);
} catch (MalformedInputException e) {
    System.out.println("MalformedInputException!");
}

// Result
// ↓
//MalformedInputException!

static BufferedWriter newBufferedWriter (Path path, OpenOption... options)

Abre o crea un archivo para escribir, devolviendo un BufferedWriter para escribir texto en el archivo de manera eficiente. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

try (final var writer = Files.newBufferedWriter(path)) {
    writer.write("abcd");
    writer.newLine();

    writer.write("XYZ");
    writer.newLine();
}

final var str = Files.readString(path);
System.out.print(str);

// Result
// ↓
//abcd
//XYZ
final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

try (final var writer = Files.newBufferedWriter(path)) {
    writer.write("abcd");
}

System.out.println(Files.readString(path)); // abcd

try (final var writer = Files.newBufferedWriter(path)) {
    writer.write("XYZ");
}

System.out.println(Files.readString(path)); // XYZ

try (final var writer = Files.newBufferedWriter(path, StandardOpenOption.APPEND)) {
    writer.write("1234");
}

System.out.println(Files.readString(path)); // XYZ1234

static SeekableByteChannel newByteChannel (Path path, OpenOption... options)

Abre o crea un archivo y devuelve un canal de bytes que se puede buscar para acceder al archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.data");
System.out.println(path);
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

try (final var channel = Files.newByteChannel(path,
        StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE)) {
    final var src = ByteBuffer.wrap(new byte[]{10, 20, 30});
    System.out.println(Arrays.toString(src.array())); // [10, 20, 30]
    System.out.println(channel.write(src)); // 3
}

System.out.println(Arrays.toString(Files.readAllBytes(path))); // [10, 20, 30]

try (final var channel = Files.newByteChannel(path, StandardOpenOption.READ)) {
    final var dst = ByteBuffer.allocate(3);
    System.out.println(channel.read(dst)); // 3
    System.out.println(Arrays.toString(dst.array())); // [10, 20, 30]
}

static SeekableByteChannel newByteChannel (Path path, Set<? extends OpenOption> options, FileAttribute<?>... attrs)

Abre o crea un archivo y devuelve un canal de bytes que se puede buscar para acceder al archivo. (Traducción automática)

Please see below links.

static DirectoryStream<Path> newDirectoryStream (Path dir)

Abre un directorio y devuelve un DirectoryStream para iterar sobre todas las entradas del directorio. (Traducción automática)

final var dir = Path.of("D:", "java-work");
System.out.println(dir); // D:\java-work

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//    aaa.txt
//    bbb.txt
//    ccc.txt

try (final var stream = Files.newDirectoryStream(dir)) {
    for (final var path : stream) {
        System.out.println(path);
    }
}

// Result
// ↓
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\ccc.txt
final var dir = Path.of("D:", "java-work");
System.out.println(dir); // D:\java-work

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa1.txt
//│  aaa2.txt
//│
//└─dir
//        bbb1.txt
//        bbb2.txt

try (final var stream = Files.newDirectoryStream(dir)) {
    for (final var path : stream) {
        System.out.println(path);
    }
}

// Result
// ↓
//D:\java-work\aaa1.txt
//D:\java-work\aaa2.txt
//D:\java-work\dir
final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

System.out.println(Files.notExists(nonExistentPath)); // true

try (var _ = Files.newDirectoryStream(nonExistentPath)) {
    System.out.println("No errors");
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static DirectoryStream<Path> newDirectoryStream (Path dir, String glob)

Abre un directorio y devuelve un DirectoryStream para iterar sobre las entradas del directorio. (Traducción automática)

Please see also : newDirectoryStream(Path dir)

final var dir = Path.of("D:", "java-work");
System.out.println(dir); // D:\java-work

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//    aaa.txt
//    bbb.txt
//    Book.java
//    Page.java

try (final var stream = Files.newDirectoryStream(dir, "*")) {
    for (final var file : stream) {
        System.out.println(file);
    }
}

// Result
// ↓
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\Book.java
//D:\java-work\Page.java

try (final var stream = Files.newDirectoryStream(dir, "*.java")) {
    for (final var file : stream) {
        System.out.println(file);
    }
}

// Result
// ↓
//D:\java-work\Book.java
//D:\java-work\Page.java

try (final var stream = Files.newDirectoryStream(dir, "b*")) {
    for (final var file : stream) {
        System.out.println(file);
    }
}

// Result
// ↓
//D:\java-work\bbb.txt
//D:\java-work\Book.java

static DirectoryStream<Path> newDirectoryStream (Path dir, DirectoryStream.Filter<? super Path> filter)

Abre un directorio y devuelve un DirectoryStream para iterar sobre las entradas del directorio. (Traducción automática)

Please see also : newDirectoryStream(Path dir)

final var dir = Path.of("D:", "java-work");
System.out.println(dir); // D:\java-work

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//    aaa.txt
//    bbb.txt
//    Book.java
//    Page.java

try (final var stream = Files.newDirectoryStream(dir, (_) -> true)) {
    for (final var path : stream) {
        System.out.println(path);
    }
}

// Result
// ↓
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\Book.java
//D:\java-work\Page.java

try (final var stream = Files.newDirectoryStream(dir, (path) -> path.toString().endsWith(".java"))) {
    for (final var path : stream) {
        System.out.println(path);
    }
}

// Result
// ↓
//D:\java-work\Book.java
//D:\java-work\Page.java

static InputStream newInputStream (Path path, OpenOption... options)

Abre un archivo y devuelve un flujo de entrada para leer desde el archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.write(path, new byte[]{10, 20, 30});

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

try (final var inputStream = Files.newInputStream(path)) {
    final var bytes = inputStream.readAllBytes();
    System.out.println(Arrays.toString(bytes)); // [10, 20, 30]
}
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.write(target, new byte[]{10, 20, 30});
Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//-a---  ...        3 aaa.txt
//la---  ...        0 link.txt -> D:\java-work\aaa.txt

try (final var inputStream = Files.newInputStream(target)) {
    final var bytes = inputStream.readAllBytes();
    System.out.println(Arrays.toString(bytes)); // [10, 20, 30]
}

try (final var inputStream = Files.newInputStream(link)) {
    final var bytes = inputStream.readAllBytes();
    System.out.println(Arrays.toString(bytes)); // [10, 20, 30]
}

try (var _ = Files.newInputStream(link, LinkOption.NOFOLLOW_LINKS)) {
    System.out.println("No errors");
} catch (IOException e) {
    System.out.println(e);
}

// Result
// ↓
//java.io.IOException: File is symbolic link

static OutputStream newOutputStream (Path path, OpenOption... options)

Abre o crea un archivo y devuelve un flujo de salida que puede usarse para escribir bytes en el archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

try (final var outputStream = Files.newOutputStream(path)) {
    outputStream.write(10);
    outputStream.write(20);
    outputStream.write(new byte[]{30, 40, 50});
}

final var bytes = Files.readAllBytes(path);
System.out.println(Arrays.toString(bytes)); // [10, 20, 30, 40, 50]
final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

try (final var outputStream = Files.newOutputStream(path)) {
    outputStream.write(10);
    outputStream.write(20);
}

System.out.println(Arrays.toString(Files.readAllBytes(path))); // [10, 20]

try (final var outputStream = Files.newOutputStream(path)) {
    outputStream.write(30);
    outputStream.write(40);
}

System.out.println(Arrays.toString(Files.readAllBytes(path))); // [30, 40]

try (final var outputStream = Files.newOutputStream(
        path, StandardOpenOption.APPEND)) {
    outputStream.write(50);
    outputStream.write(60);
}

System.out.println(Arrays.toString(Files.readAllBytes(path))); // [30, 40, 50, 60]

static boolean notExists (Path path, LinkOption... options)

Comprueba si el archivo ubicado en esta ruta no existe. (Traducción automática)

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

final var file = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx

Files.createDirectory(dir);
Files.createFile(file);
Files.createSymbolicLink(link, nonExistentPath);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//-a---  ...        0 aaa.txt
//la---  ...        0 link.txt -> D:\java-work\xxx

System.out.println(Files.isDirectory(dir)); // true
System.out.println(Files.notExists(dir)); // false

System.out.println(Files.isRegularFile(file)); // true
System.out.println(Files.notExists(file)); // false

System.out.println(Files.isSymbolicLink(link)); // true
System.out.println(Files.notExists(link)); // true
System.out.println(Files.notExists(link, LinkOption.NOFOLLOW_LINKS)); // false

System.out.println(Files.notExists(nonExistentPath)); // true

static String probeContentType (Path path)

Sondea el tipo de contenido de un archivo. (Traducción automática)

// --- PowerShell ---
//PS D:\java-work> ls -Name
//image.png
//index.html
//text.txt
//unknown.abc

final var imageFile = Path.of("D:", "java-work", "image.png");
System.out.println(Files.probeContentType(imageFile)); // "image/png"

final var htmlFile = Path.of("D:", "java-work", "index.html");
System.out.println(Files.probeContentType(htmlFile)); // "text/html"

final var textFile = Path.of("D:", "java-work", "text.txt");
System.out.println(Files.probeContentType(textFile)); // "text/plain"

final var unknownFile = Path.of("D:", "java-work", "unknown.abc");
System.out.println(Files.probeContentType(unknownFile)); // null

static byte[] readAllBytes (Path path)

Lee todos los bytes de un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.write(path, new byte[]{10, 20, 30});

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

final var ret = Files.readAllBytes(path);
System.out.println(Arrays.toString(ret)); // [10, 20, 30]

static List<String> readAllLines (Path path)

Leer todas las líneas de un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.writeString(path, """
        abcd
        XYZ
        12345
        """);

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

final var ret = Files.readAllLines(path);
System.out.println(ret); // [abcd, XYZ, 12345]

static List<String> readAllLines (Path path, Charset cs)

Leer todas las líneas de un archivo. (Traducción automática)

Please see also : readAllLines(Path path)

final var utf8 = Path.of("D:", "java-work", "aaa.txt");
System.out.println(utf8); // D:\java-work\aaa.txt

Files.writeString(utf8, """
        abcd
        〇△□×
        """, StandardCharsets.UTF_8);

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

final var lines = Files.readAllLines(utf8, StandardCharsets.UTF_8);
System.out.println(lines); // [abcd, 〇△□×]

try {
    Files.readAllLines(utf8, Charset.forName("Shift_JIS"));
} catch (MalformedInputException e) {
    System.out.println("MalformedInputException!");
}

// Result
// ↓
//MalformedInputException!
final var sjis = Path.of("D:", "java-work", "aaa.txt");
System.out.println(sjis); // D:\java-work\aaa.txt

Files.writeString(sjis, """
        abcd
        〇△□×
        """, Charset.forName("Shift_JIS"));

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

final var lines = Files.readAllLines(sjis, Charset.forName("Shift_JIS"));
System.out.println(lines); // [abcd, 〇△□×]

try {
    Files.readAllLines(sjis, StandardCharsets.UTF_8);
} catch (MalformedInputException e) {
    System.out.println("MalformedInputException!");
}

// Result
// ↓
//MalformedInputException!

static <A extends BasicFileAttributes> A readAttributes (Path path, Class<A> type, LinkOption... options)

Lee los atributos de un archivo como una operación masiva. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.writeString(path, "abcd");

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Length, Name
//
//Mode  Length Name
//----  ------ ----
//-a---      4 aaa.txt

final var attrs = Files.readAttributes(path, BasicFileAttributes.class);

System.out.println(attrs.isDirectory()); // false
System.out.println(attrs.isRegularFile()); // true
System.out.println(attrs.size()); // 4
final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

Files.createDirectory(dir);

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir

final var attrs = Files.readAttributes(dir, BasicFileAttributes.class);

System.out.println(attrs.isDirectory()); // true
System.out.println(attrs.isRegularFile()); // false
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.createFile(target);
Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//-a---  ...        0 aaa.txt
//la---  ...        0 link.txt -> D:\java-work\aaa.txt

final var attrs1 = Files.readAttributes(link, BasicFileAttributes.class);
System.out.println(attrs1.isSymbolicLink()); // false

final var attrs2 = Files.readAttributes(link,
        BasicFileAttributes.class, LinkOption.NOFOLLOW_LINKS);
System.out.println(attrs2.isSymbolicLink()); // true
final var readOnlyFile = Path.of("D:", "java-work", "read-only.txt");
System.out.println(readOnlyFile); // D:\java-work\read-only.txt

final var hiddenFile = Path.of("D:", "java-work", "hidden.txt");
System.out.println(hiddenFile); // D:\java-work\hidden.txt

Files.createFile(readOnlyFile);
Files.setAttribute(readOnlyFile, "dos:readonly", true);

Files.createFile(hiddenFile);
Files.setAttribute(hiddenFile, "dos:hidden", true);

// --- PowerShell ---
//PS D:\java-work> ls -Force | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//-a-h- hidden.txt
//-ar-- read-only.txt

final var attrs1 = Files.readAttributes(readOnlyFile, DosFileAttributes.class);

System.out.println(attrs1.isHidden()); // false
System.out.println(attrs1.isReadOnly()); // true

final var attrs2 = Files.readAttributes(hiddenFile, DosFileAttributes.class);

System.out.println(attrs2.isHidden()); // true
System.out.println(attrs2.isReadOnly()); // false

static Map<String,Object> readAttributes (Path path, String attributes, LinkOption... options)

Lee un conjunto de atributos de archivo como una operación masiva. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//-a--- aaa.txt

final var file = Path.of("D:", "java-work", "aaa.txt");
final var attrs = Files.readAttributes(file, "*");

//{lastAccessTime=2024-10-19T07:19:25.3063571Z,
// lastModifiedTime=2024-10-19T07:19:25.3063571Z,
// size=0, creationTime=2024-10-19T07:14:47.356487Z,
// isSymbolicLink=false, isRegularFile=true, fileKey=null,
// isOther=false, isDirectory=false}
System.out.println(attrs);
final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir

Files.createDirectory(dir);

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//d---- dir

final var attrs = Files.readAttributes(dir, "isRegularFile,isDirectory");
System.out.println(attrs); // {isRegularFile=false, isDirectory=true}
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.createFile(target);
Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//-a---  ...        0 aaa.txt
//la---  ...        0 link.txt -> D:\java-work\aaa.txt

final var attrs1 = Files.readAttributes(link, "isRegularFile,isSymbolicLink");
System.out.println(attrs1); // {isSymbolicLink=false, isRegularFile=true}

final var attrs2 = Files.readAttributes(link,
        "isRegularFile,isSymbolicLink", LinkOption.NOFOLLOW_LINKS);
System.out.println(attrs2); // {isSymbolicLink=true, isRegularFile=false}
final var readOnlyFile = Path.of("D:", "java-work", "read-only.txt");
System.out.println(readOnlyFile); // D:\java-work\read-only.txt

final var hiddenFile = Path.of("D:", "java-work", "hidden.txt");
System.out.println(hiddenFile); // D:\java-work\hidden.txt

Files.createFile(readOnlyFile);
Files.setAttribute(readOnlyFile, "dos:readonly", true);

Files.createFile(hiddenFile);
Files.setAttribute(hiddenFile, "dos:hidden", true);

// --- PowerShell ---
//PS D:\java-work> ls -Force | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//-a-h- hidden.txt
//-ar-- read-only.txt

final var attrs1 = Files.readAttributes(
        readOnlyFile, "dos:isRegularFile,hidden,readonly");
System.out.println(attrs1); // {readonly=true, hidden=false, isRegularFile=true}

final var attrs2 = Files.readAttributes(
        hiddenFile, "dos:isRegularFile,hidden,readonly");
System.out.println(attrs2); // {readonly=false, hidden=true, isRegularFile=true}

static String readString (Path path)

Lee todo el contenido de un archivo en una cadena, decodificando de bytes a caracteres utilizando el juego de caracteres UTF-8. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.writeString(path, """
        abcd
        XYZ
        12345
        """);

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

final var ret = Files.readString(path);
System.out.println(ret);

// Result
// ↓
//abcd
//XYZ
//12345

static String readString (Path path, Charset cs)

Lee todos los caracteres de un archivo en una cadena, decodificando de bytes a caracteres utilizando el conjunto de caracteres especificado. (Traducción automática)

Please see also : readString(Path path)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.writeString(path, "〇△□×", Charset.forName("Shift_JIS"));

// --- PowerShell ---
//PS D:\java-work> ls -Name
//aaa.txt

System.out.println(Files.readString(path, Charset.forName("Shift_JIS"))); // 〇△□×

try {
    Files.readString(path, StandardCharsets.UTF_8);
} catch (MalformedInputException e) {
    System.out.println("MalformedInputException!");
}

// Result
// ↓
//MalformedInputException!

static Path readSymbolicLink (Path link)

Lee el objetivo de un enlace simbólico (operación opcional). (Traducción automática)

final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.createFile(target);
Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//la---  ...        0 link.txt -> D:\java-work\target.txt
//-a---  ...        0 target.txt

System.out.println(Files.isRegularFile(link)); // true
System.out.println(Files.isSymbolicLink(link)); // true
System.out.println(Files.readSymbolicLink(link)); // aaa.txt

try {
    System.out.println(Files.isRegularFile(target)); // true
    System.out.println(Files.isSymbolicLink(target)); // false
    Files.readSymbolicLink(target);

} catch (NotLinkException e) {
    System.out.println("NotLinkException!");
}

// Result
// ↓
//NotLinkException!

static Path setAttribute (Path path, String attribute, Object value, LinkOption... options)

Establece el valor de un atributo de archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);
System.out.println(Files.isHidden(path)); // false

// --- PowerShell ---
//PS D:\java-work> ls -Force | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//-a--- aaa.txt

Files.setAttribute(path, "dos:hidden", true);
System.out.println(Files.isHidden(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Force | Format-Table -Property Mode, Name
//
//Mode  Name
//----  ----
//-a-h- aaa.txt
final var target = Path.of("D:", "java-work", "target.txt");
System.out.println(target); // D:\java-work\target.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.createFile(target);
Files.createSymbolicLink(link, target);

System.out.println(Files.isHidden(target)); // false

// --- PowerShell ---
//PS D:\java-work> ls -Force
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//la---  ...        0 link.txt -> D:\java-work\target.txt
//-a---  ...        0 target.txt

Files.setAttribute(link, "dos:hidden", true);
System.out.println(Files.isHidden(target)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Force
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//la---  ...        0 link.txt -> D:\java-work\target.txt
//-a-h-  ...        0 target.txt

Files.setAttribute(link, "dos:hidden", true, LinkOption.NOFOLLOW_LINKS);
System.out.println(Files.isHidden(target)); // true

// --- PowerShell ---
//PS D:\java-work> ls -Force
//...
//Mode   ...   Length Name
//----   ...   ------ ----
//la-h-  ...        0 link.txt -> D:\java-work\target.txt
//-a-h-  ...        0 target.txt

static Path setLastModifiedTime (Path path, FileTime time)

Actualiza el atributo de hora de la última modificación de un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);

final var zoneId = ZoneId.systemDefault();
System.out.println(zoneId); // Asia/Tokyo

final var ret = Files.setLastModifiedTime(path, FileTime.from(
        ZonedDateTime.of(2100, 1, 1, 0, 0, 0, 0, zoneId).toInstant()));
System.out.println(ret); // D:\java-work\aaa.txt

// --- PowerShell ---
//PS D:\java-work> ls | Format-Table -Property LastWriteTime, Name
//
//LastWriteTime      Name
//-------------      ----
//2100/01/01 0:00:00 aaa.txt

// FileTime is UTC.
final var fileTime = Files.getLastModifiedTime(path);
System.out.println(fileTime); // 2099-12-31T15:00:00Z

final var zonedDateTime = ZonedDateTime.ofInstant(fileTime.toInstant(), zoneId);
System.out.println(zonedDateTime); // 2100-01-01T00:00+09:00[Asia/Tokyo]
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

final var zoneId = ZoneId.systemDefault();
System.out.println(zoneId); // Asia/Tokyo

final var zonedDateTime = ZonedDateTime.of(2100, 1, 1, 0, 0, 0, 0, zoneId);
System.out.println(zonedDateTime); // 2100-01-01T00:00+09:00[Asia/Tokyo]

Files.createFile(target);
Files.setLastModifiedTime(target, FileTime.from(zonedDateTime.toInstant()));

Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls
//...
//Mode                 LastWriteTime         Length Name
//----                 -------------         ------ ----
//-a---          2100/01/01     0:00              0 aaa.txt
//la---          2024/10/19    16:31              0 link.txt -> D:\java-work\aaa.txt

final var ret1 = Files.getLastModifiedTime(link);
System.out.println(ret1); // 2099-12-31T15:00:00Z

final var ret2 = Files.getLastModifiedTime(link, LinkOption.NOFOLLOW_LINKS);
System.out.println(ret2); // 2024-10-19T07:31:55.9393338Z

static Path setOwner (Path path, UserPrincipal owner)

Actualiza el propietario del archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt

Files.createFile(path);

final var service = path.getFileSystem().getUserPrincipalLookupService();
final var newOwner = service.lookupPrincipalByName("test-user");

final var ret1 = Files.setOwner(path, newOwner);
System.out.println(ret1); // D:\java-work\aaa.txt

// --- PowerShell ---
//PS D:\java-work> Get-Acl .\aaa.txt
//...
//Path    Owner           Access
//----    -----           ------
//aaa.txt MY-PC\test-user BUILTIN\Administrators Allow  FullControl…

final var ret2 = Files.getOwner(path);
System.out.println(ret2); // MY-PC\test-user (User)
final var target = Path.of("D:", "java-work", "aaa.txt");
System.out.println(target); // D:\java-work\aaa.txt

final var link = Path.of("D:", "java-work", "link.txt");
System.out.println(link); // D:\java-work\link.txt

Files.createSymbolicLink(link, target);

// --- PowerShell ---
//PS D:\java-work> ls | Get-Acl
//..
//Path     Owner                    Access
//----     -----                    ------
//aaa.txt  MY-PC\test-user          BUILTIN\Administrators Allow  FullControl…
//link.txt BUILTIN\Administrators   BUILTIN\Administrators Allow  FullControl…

final var ret1 = Files.getOwner(link);
System.out.println(ret1); // MY-PC\test-user (User)

final var ret2 = Files.getOwner(link, LinkOption.NOFOLLOW_LINKS);
System.out.println(ret2); // BUILTIN\Administrators (Alias)

static Path setPosixFilePermissions (Path path, Set<PosixFilePermission> perms)

Establece los permisos POSIX de un archivo. (Traducción automática)

The following code runs on Linux.

System.out.println(System.getProperty("os.name")); // Linux

// --- Linux Terminal ---
//$ ls -l sample.sh
//-rw-rw-r-- 1 xxxx xxxx 0 ... sample.sh

final var path = Path.of("sample.sh");

final var permissions = Files.getPosixFilePermissions(path);
System.out.println(PosixFilePermissions.toString(permissions)); // rw-rw-r--

final var newPermissions = PosixFilePermissions.fromString("rwxr-xr--");

final var ret = Files.setPosixFilePermissions(path, newPermissions);
System.out.println(ret); // sample.sh

// --- Linux Terminal ---
//$ ls -l sample.sh
//-rwxr-xr-- 1 xxxx xxxx 0 ... sample.sh

static long size (Path path)

Devuelve el tamaño de un archivo (en bytes). (Traducción automática)

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa.txt
//│  bbb.txt
//│
//└─dir
//        ccc.txt
//
//PS D:\java-work> ls -Recurse
//
//    Directory: D:\java-work
//
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//-a---  ...        5 aaa.txt
//-a---  ...     1000 bbb.txt
//
//    Directory: D:\java-work\dir
//
//Mode   ...   Length Name
//----   ...   ------ ----
//-a---  ...       12 ccc.txt


final var file1 = Path.of("D:", "java-work", "aaa.txt");
System.out.println(file1); // D:\java-work\aaa.txt
System.out.println(Files.size(file1)); // 5

final var file2 = Path.of("D:", "java-work", "bbb.txt");
System.out.println(file2); // D:\java-work\bbb.txt
System.out.println(Files.size(file2)); // 1000

final var dir = Path.of("D:", "java-work", "dir");
System.out.println(dir); // D:\java-work\dir
System.out.println(Files.size(dir)); // 0
final var nonExistentPath = Path.of("D:", "java-work", "xxx");
System.out.println(nonExistentPath); // D:\java-work\xxx
System.out.println(Files.notExists(nonExistentPath)); // true

try {
    Files.size(nonExistentPath);
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static Stream<Path> walk (Path start, int maxDepth, FileVisitOption... options)

Devuelve un Stream que se rellena de forma diferida con Path recorriendo el árbol de archivos con raíz en un archivo de inicio determinado. (Traducción automática)

Please see also : walk(Path start, FileVisitOption... options)

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa.txt
//│  bbb.txt
//│
//├─dir1
//│  │  ccc.txt
//│  │  ddd.txt
//│  │
//│  └─dir1-2
//│          eee.txt
//│          fff.txt
//│
//└─dir2
//        ggg.txt
//        hhh.txt

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

System.out.println("maxDepth : 3");
try (final var stream = Files.walk(start, 3)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//maxDepth : 3
//D:\java-work
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\dir1
//D:\java-work\dir1\ccc.txt
//D:\java-work\dir1\ddd.txt
//D:\java-work\dir1\dir1-2
//D:\java-work\dir1\dir1-2\eee.txt
//D:\java-work\dir1\dir1-2\fff.txt
//D:\java-work\dir2
//D:\java-work\dir2\ggg.txt
//D:\java-work\dir2\hhh.txt

System.out.println("maxDepth : 2");
try (final var stream = Files.walk(start, 2)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//maxDepth : 2
//D:\java-work
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\dir1
//D:\java-work\dir1\ccc.txt
//D:\java-work\dir1\ddd.txt
//D:\java-work\dir1\dir1-2
//D:\java-work\dir2
//D:\java-work\dir2\ggg.txt
//D:\java-work\dir2\hhh.txt

System.out.println("maxDepth : 1");
try (final var stream = Files.walk(start, 1)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//maxDepth : 1
//D:\java-work
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\dir1
//D:\java-work\dir2

System.out.println("maxDepth : 0");
try (final var stream = Files.walk(start, 0)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//maxDepth : 0
//D:\java-work

static Stream<Path> walk (Path start, FileVisitOption... options)

Devuelve un Stream que se rellena de forma diferida con Path recorriendo el árbol de archivos con raíz en un archivo de inicio determinado. (Traducción automática)

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa.txt
//│  bbb.txt
//│
//├─dir1
//│  │  ccc.txt
//│  │  ddd.txt
//│  │
//│  └─dir1-2
//│          eee.txt
//│          fff.txt
//│
//└─dir2
//        ggg.txt
//        hhh.txt

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

try (final var stream = Files.walk(start)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//D:\java-work
//D:\java-work\aaa.txt
//D:\java-work\bbb.txt
//D:\java-work\dir1
//D:\java-work\dir1\ccc.txt
//D:\java-work\dir1\ddd.txt
//D:\java-work\dir1\dir1-2
//D:\java-work\dir1\dir1-2\eee.txt
//D:\java-work\dir1\dir1-2\fff.txt
//D:\java-work\dir2
//D:\java-work\dir2\ggg.txt
//D:\java-work\dir2\hhh.txt
// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//├─dir
//│      aaa.txt
//│      bbb.txt
//│
//└─link-dir
//        aaa.txt
//        bbb.txt
//
//PS D:\java-work> ls
//
//    Directory: D:\java-work
//
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//l----  ...          link-dir -> D:\java-work\dir

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

try (final var stream = Files.walk(start)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//D:\java-work
//D:\java-work\dir
//D:\java-work\dir\aaa.txt
//D:\java-work\dir\bbb.txt
//D:\java-work\link-dir

System.out.println("FileVisitOption : FOLLOW_LINKS");
try (final var stream = Files.walk(start, FileVisitOption.FOLLOW_LINKS)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//FileVisitOption : FOLLOW_LINKS
//D:\java-work
//D:\java-work\dir
//D:\java-work\dir\aaa.txt
//D:\java-work\dir\bbb.txt
//D:\java-work\link-dir
//D:\java-work\link-dir\aaa.txt
//D:\java-work\link-dir\bbb.txt
// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//└─dir
//    │  aaa.txt
//    │  bbb.txt
//    │
//    └─link-parent-dir
//        │  aaa.txt
//        │  bbb.txt
//        │
//        └─link-parent-dir
//            │  aaa.txt
//            │  bbb.txt
// ...

// --- PowerShell ---
//PS D:\java-work> ls -Recurse
//
//    Directory: D:\java-work
//
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//
//    Directory: D:\java-work\dir
//
//Mode   ...   Length Name
//----   ...   ------ ----
//l----  ...          link-parent-dir -> D:\java-work\dir
//-a---  ...        0 aaa.txt
//-a---  ...        0 bbb.txt

// Symbolic links are circular.

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

try (final var stream = Files.walk(start)) {
    stream.forEach(System.out::println);
}

// Result
// ↓
//D:\java-work
//D:\java-work\dir
//D:\java-work\dir\aaa.txt
//D:\java-work\dir\bbb.txt
//D:\java-work\dir\link-parent-dir

System.out.println("FileVisitOption : FOLLOW_LINKS");
try (final var stream = Files.walk(start, FileVisitOption.FOLLOW_LINKS)) {
    stream.forEach(System.out::println);
} catch (UncheckedIOException e) {
    System.out.println(e);
}

// Result
// ↓
//FileVisitOption : FOLLOW_LINKS
//D:\java-work
//D:\java-work\dir
//D:\java-work\dir\aaa.txt
//D:\java-work\dir\bbb.txt
//java.io.UncheckedIOException: java.nio.file.FileSystemLoopException
final var start = Path.of("D:", "java-work", "xxx");
System.out.println(start); // D:\java-work\xxx
System.out.println(Files.notExists(start)); // true

try (var _ = Files.walk(start)) {
    System.out.println("No errors");
} catch (NoSuchFileException e) {
    System.out.println("NoSuchFileException!");
}

// Result
// ↓
//NoSuchFileException!

static Path walkFileTree (Path start, FileVisitor<? super Path> visitor)

Recorre un árbol de archivos. (Traducción automática)

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa.txt
//│  bbb.txt
//│
//├─dir1
//│  │  ccc.txt
//│  │  ddd.txt
//│  │
//│  └─dir1-2
//│          eee.txt
//│          fff.txt
//│
//└─dir2
//        ggg.txt
//        hhh.txt

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

System.out.println("-- start --");
final var ret1 = Files.walkFileTree(start, new FileVisitor<>() {
    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
        System.out.println("preVisitDirectory : " + dir);
        return FileVisitResult.CONTINUE;
    }

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

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) {
        System.out.println("visitFileFailed : " + file);
        return FileVisitResult.CONTINUE;
    }

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

System.out.println("ret : " + ret1);

// Result
// ↓
//-- start --
//preVisitDirectory : D:\java-work
//visitFile : D:\java-work\aaa.txt
//visitFile : D:\java-work\bbb.txt
//preVisitDirectory : D:\java-work\dir1
//visitFile : D:\java-work\dir1\ccc.txt
//visitFile : D:\java-work\dir1\ddd.txt
//preVisitDirectory : D:\java-work\dir1\dir1-2
//visitFile : D:\java-work\dir1\dir1-2\eee.txt
//visitFile : D:\java-work\dir1\dir1-2\fff.txt
//postVisitDirectory : D:\java-work\dir1\dir1-2
//postVisitDirectory : D:\java-work\dir1
//preVisitDirectory : D:\java-work\dir2
//visitFile : D:\java-work\dir2\ggg.txt
//visitFile : D:\java-work\dir2\hhh.txt
//postVisitDirectory : D:\java-work\dir2
//postVisitDirectory : D:\java-work
//ret : D:\java-work

System.out.println("-- start --");
final var ret2 = Files.walkFileTree(start, new FileVisitor<>() {
    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
        System.out.println("preVisitDirectory : " + dir);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
        System.out.println("visitFile : " + file);
        if (Path.of("D:", "java-work", "aaa.txt").equals(file)) {
            return FileVisitResult.SKIP_SIBLINGS;
        }
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) {
        System.out.println("visitFileFailed : " + file);
        return FileVisitResult.CONTINUE;
    }

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

System.out.println("ret : " + ret2);

// Result
// ↓
//-- start --
//preVisitDirectory : D:\java-work
//visitFile : D:\java-work\aaa.txt
//postVisitDirectory : D:\java-work
//ret : D:\java-work

System.out.println("-- start --");
final var ret3 = Files.walkFileTree(start, new FileVisitor<>() {
    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
        System.out.println("preVisitDirectory : " + dir);
        if (Path.of("D:", "java-work", "dir1").equals(dir)) {
            return FileVisitResult.SKIP_SUBTREE;
        }

        return FileVisitResult.CONTINUE;
    }

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

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) {
        System.out.println("visitFileFailed : " + file);
        return FileVisitResult.CONTINUE;
    }

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

System.out.println("ret : " + ret3);

// Result
// ↓
//-- start --
//preVisitDirectory : D:\java-work
//visitFile : D:\java-work\aaa.txt
//visitFile : D:\java-work\bbb.txt
//preVisitDirectory : D:\java-work\dir1
//preVisitDirectory : D:\java-work\dir2
//visitFile : D:\java-work\dir2\ggg.txt
//visitFile : D:\java-work\dir2\hhh.txt
//postVisitDirectory : D:\java-work\dir2
//postVisitDirectory : D:\java-work
//ret : D:\java-work
// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//├─dir1
//└─dir2
//        aaa.txt
//
//PS D:\java-work> ls | Get-Acl
//...
//Path Owner           Access
//---- -----           ------
//dir1 MY-PC\test-user BUILTIN\Administrators Deny  ReadData…
//dir2 MY-PC\test-user BUILTIN\Administrators Allow  FullControl…

// Intentional errors.

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

System.out.println("-- start --");
final var ret = Files.walkFileTree(start, new FileVisitor<>() {
    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
        System.out.println("preVisitDirectory : " + dir);
        return FileVisitResult.CONTINUE;
    }

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

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) {
        System.out.println("visitFileFailed : " + file);
        return FileVisitResult.CONTINUE;
    }

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

System.out.println("ret : " + ret);

// Result
// ↓
//-- start --
//preVisitDirectory : D:\java-work
//visitFileFailed : D:\java-work\dir1
//preVisitDirectory : D:\java-work\dir2
//visitFile : D:\java-work\dir2\aaa.txt
//postVisitDirectory : D:\java-work\dir2
//postVisitDirectory : D:\java-work
//ret : D:\java-work

static Path walkFileTree (Path start, Set<FileVisitOption> options, int maxDepth, FileVisitor<? super Path> visitor)

Recorre un árbol de archivos. (Traducción automática)

Please see also : walkFileTree(Path start, FileVisitor<? super Path> visitor)

// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//│  aaa.txt
//│  bbb.txt
//│
//├─dir1
//│  │  ccc.txt
//│  │  ddd.txt
//│  │
//│  └─dir1-2
//│          eee.txt
//│          fff.txt
//│
//└─dir2
//        ggg.txt
//        hhh.txt

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

final var visitor = new FileVisitor<Path>() {
    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
        System.out.println("preVisitDirectory : " + dir);
        return FileVisitResult.CONTINUE;
    }

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

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) {
        System.out.println("visitFileFailed : " + file);
        return FileVisitResult.CONTINUE;
    }

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

System.out.println("maxDepth : 3");
final var ret1 = Files.walkFileTree(start, Collections.emptySet(), 3, visitor);
System.out.println("ret : " + ret1);

// Result
// ↓
//maxDepth : 3
//preVisitDirectory : D:\java-work
//visitFile : D:\java-work\aaa.txt
//visitFile : D:\java-work\bbb.txt
//preVisitDirectory : D:\java-work\dir1
//visitFile : D:\java-work\dir1\ccc.txt
//visitFile : D:\java-work\dir1\ddd.txt
//preVisitDirectory : D:\java-work\dir1\dir1-2
//visitFile : D:\java-work\dir1\dir1-2\eee.txt
//visitFile : D:\java-work\dir1\dir1-2\fff.txt
//postVisitDirectory : D:\java-work\dir1\dir1-2
//postVisitDirectory : D:\java-work\dir1
//preVisitDirectory : D:\java-work\dir2
//visitFile : D:\java-work\dir2\ggg.txt
//visitFile : D:\java-work\dir2\hhh.txt
//postVisitDirectory : D:\java-work\dir2
//postVisitDirectory : D:\java-work
//ret : D:\java-work

System.out.println("maxDepth : 2");
final var ret2 = Files.walkFileTree(start, Collections.emptySet(), 2, visitor);
System.out.println("ret : " + ret2);

// Result
// ↓
//maxDepth : 2
//preVisitDirectory : D:\java-work
//visitFile : D:\java-work\aaa.txt
//visitFile : D:\java-work\bbb.txt
//preVisitDirectory : D:\java-work\dir1
//visitFile : D:\java-work\dir1\ccc.txt
//visitFile : D:\java-work\dir1\ddd.txt
//visitFile : D:\java-work\dir1\dir1-2
//postVisitDirectory : D:\java-work\dir1
//preVisitDirectory : D:\java-work\dir2
//visitFile : D:\java-work\dir2\ggg.txt
//visitFile : D:\java-work\dir2\hhh.txt
//postVisitDirectory : D:\java-work\dir2
//postVisitDirectory : D:\java-work
//ret : D:\java-work

System.out.println("maxDepth : 1");
final var ret3 = Files.walkFileTree(start, Collections.emptySet(), 1, visitor);
System.out.println("ret : " + ret3);

// Result
// ↓
//maxDepth : 1
//preVisitDirectory : D:\java-work
//visitFile : D:\java-work\aaa.txt
//visitFile : D:\java-work\bbb.txt
//visitFile : D:\java-work\dir1
//visitFile : D:\java-work\dir2
//postVisitDirectory : D:\java-work
//ret : D:\java-work

System.out.println("maxDepth : 0");
final var ret = Files.walkFileTree(start, Collections.emptySet(), 0, visitor);
System.out.println("ret : " + ret);

// Result
// ↓
//maxDepth : 0
//visitFile : D:\java-work
//ret : D:\java-work
// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//├─dir
//│      aaa.txt
//│      bbb.txt
//│
//└─link-dir
//        aaa.txt
//        bbb.txt
//
//PS D:\java-work> ls
//
//    Directory: D:\java-work
//
//Mode   ...   Length Name
//----   ...   ------ ----
//d----  ...          dir
//l----  ...          link-dir -> D:\java-work\dir

final var start = Path.of("D:", "java-work");
System.out.println(start); // D:\java-work

final var visitor = new FileVisitor<Path>() {
    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
        System.out.println("preVisitDirectory : " + dir);
        return FileVisitResult.CONTINUE;
    }

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

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) {
        System.out.println("visitFileFailed : " + file);
        return FileVisitResult.CONTINUE;
    }

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

final var ret1 = Files.walkFileTree(
        start, Collections.emptySet(), Integer.MAX_VALUE, visitor);
System.out.println("ret : " + ret1);

// Result
// ↓
//preVisitDirectory : D:\java-work
//preVisitDirectory : D:\java-work\dir
//visitFile : D:\java-work\dir\aaa.txt
//visitFile : D:\java-work\dir\bbb.txt
//postVisitDirectory : D:\java-work\dir
//visitFile : D:\java-work\link-dir
//postVisitDirectory : D:\java-work
//ret : D:\java-work

System.out.println("FileVisitOption : FOLLOW_LINKS");
final var ret2 = Files.walkFileTree(
        start, Set.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, visitor);
System.out.println("ret : " + ret2);

// Result
// ↓
//FileVisitOption : FOLLOW_LINKS
//preVisitDirectory : D:\java-work
//preVisitDirectory : D:\java-work\dir
//visitFile : D:\java-work\dir\aaa.txt
//visitFile : D:\java-work\dir\bbb.txt
//postVisitDirectory : D:\java-work\dir
//preVisitDirectory : D:\java-work\link-dir
//visitFile : D:\java-work\link-dir\aaa.txt
//visitFile : D:\java-work\link-dir\bbb.txt
//postVisitDirectory : D:\java-work\link-dir
//postVisitDirectory : D:\java-work
//ret : D:\java-work
// --- PowerShell ---
//PS D:\java-work> tree /F
//...
//D:.
//└─dir
//    │  aaa.txt
//    │  bbb.txt
//    │
//    └─link-parent-dir
//        │  aaa.txt
//        │  bbb.txt
//        │
//        └─link-parent-dir
//            │  aaa.txt
//            │  bbb.txt
// ...

// --- PowerShell ---
//PS D:\java-work> ls -Recurse
//
//    Directory: D:\java-work
//
//Mode   ...   Length Name
//----   ...   ----- ----
//d----  ...         dir
//
//    Directory: D:\java-work\dir
//
//Mode   ...   Length Name
//----   ...   ------ ----
//l----  ...          link-parent-dir -> D:\java-work\dir
//-a---  ...        0 aaa.txt
//-a---  ...        0 bbb.txt

// Symbolic links are circular.

final var start = Path.of("D:", "java-work");
System.out.println(start);

final var visitor = new FileVisitor<Path>() {
    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) {
        System.out.println("preVisitDirectory : " + dir);
        return FileVisitResult.CONTINUE;
    }

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

    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) {
        System.out.println("visitFileFailed : " + file);
        return FileVisitResult.CONTINUE;
    }

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

final var ret = Files.walkFileTree(start,
        Set.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, visitor);
System.out.println("ret : " + ret);

// Result
// ↓
//preVisitDirectory : D:\java-work
//preVisitDirectory : D:\java-work\dir
//visitFile : D:\java-work\dir\aaa.txt
//visitFile : D:\java-work\dir\bbb.txt
//visitFileFailed : D:\java-work\dir\link-parent-dir
//postVisitDirectory : D:\java-work\dir
//postVisitDirectory : D:\java-work
//ret : D:\java-work

static Path write (Path path, byte[] bytes, OpenOption... options)

Escribe bytes en un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.data");
System.out.println(path); // D:\java-work\aaa.data
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final byte[] bytes1 = {0, 1, 2};
System.out.println(Files.write(path, bytes1)); // D:\java-work\aaa.data
System.out.println(Arrays.toString(Files.readAllBytes(path))); // [0, 1, 2]

final byte[] bytes2 = {3, 4, 5};
System.out.println(Files.write(path, bytes2)); // D:\java-work\aaa.data
System.out.println(Arrays.toString(Files.readAllBytes(path))); // [3, 4, 5]

final byte[] bytes3 = {6, 7, 8};
System.out.println(Files.write(
        path, bytes3, StandardOpenOption.APPEND)); // D:\java-work\aaa.data
System.out.println(Arrays.toString(Files.readAllBytes(path))); // [3, 4, 5, 6, 7, 8]

static Path write (Path path, Iterable<? extends CharSequence> lines, Charset cs, OpenOption... options)

Escribe líneas de texto en un archivo. (Traducción automática)

Please see also : write(Path path, Iterable<? extends CharSequence> lines, OpenOption... options)

final var sjis = Path.of("D:", "java-work", "aaa.txt");
System.out.println(sjis); // D:\java-work\aaa.txt
System.out.println(Files.notExists(sjis)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final var ret1 = Files.write(sjis, List.of("〇", "△", "□"), Charset.forName("Shift_JIS"));
System.out.println(ret1); // D:\java-work\aaa.txt
System.out.println(Files.readAllLines(sjis, Charset.forName("Shift_JIS"))); // [〇, △, □]

try {
    Files.readAllLines(sjis, StandardCharsets.UTF_8);
} catch (MalformedInputException e) {
    System.out.println("MalformedInputException!");
}

// Result
// ↓
//MalformedInputException!

static Path write (Path path, Iterable<? extends CharSequence> lines, OpenOption... options)

Escribe líneas de texto en un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final var ret1 = Files.write(path, List.of("aaa", "bbb", "ccc"));
System.out.println(ret1); // D:\java-work\aaa.txt
System.out.println(Files.readAllLines(path)); // [aaa, bbb, ccc]

final var ret2 = Files.write(path, List.of("ddd", "eee", "fff"));
System.out.println(ret2); // D:\java-work\aaa.txt
System.out.println(Files.readAllLines(path)); // [ddd, eee, fff]

final var ret3 = Files.write(path,
        List.of("XXX", "YYY", "ZZZ"), StandardOpenOption.APPEND);
System.out.println(ret3); // D:\java-work\aaa.txt
System.out.println(Files.readAllLines(path)); // // [ddd, eee, fff, XXX, YYY, ZZZ]

static Path writeString (Path path, CharSequence csq, Charset cs, OpenOption... options)

Escribe una CharSequence en un archivo. (Traducción automática)

Please see also : writeString(Path path, CharSequence csq, OpenOption... options)

final var sjis = Path.of("D:", "java-work", "aaa.txt");
System.out.println(sjis); // D:\java-work\aaa.txt
System.out.println(Files.notExists(sjis)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final var ret = Files.writeString(sjis, "〇△□×", Charset.forName("Shift_JIS"));
System.out.println(ret); // D:\java-work\aaa.txt
System.out.println(Files.readString(sjis, Charset.forName("Shift_JIS"))); // 〇△□×

try {
    Files.readString(sjis, StandardCharsets.UTF_8);
} catch (MalformedInputException e) {
    System.out.println("MalformedInputException!");
}

// Result
// ↓
//MalformedInputException!

static Path writeString (Path path, CharSequence csq, OpenOption... options)

Escribe una CharSequence en un archivo. (Traducción automática)

final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final var ret1 = Files.writeString(path, "abc");
System.out.println(ret1); // D:\java-work\aaa.txt
System.out.println(Files.readString(path)); // abc

final var ret2 = Files.writeString(path, "def");
System.out.println(ret2); // D:\java-work\aaa.txt
System.out.println(Files.readString(path)); // def

final var ret3 = Files.writeString(path, "XYZ", StandardOpenOption.APPEND);
System.out.println(ret3); // D:\java-work\aaa.txt
System.out.println(Files.readString(path)); // defXYZ
final var path = Path.of("D:", "java-work", "aaa.txt");
System.out.println(path); // D:\java-work\aaa.txt
System.out.println(Files.notExists(path)); // true

// --- PowerShell ---
//PS D:\java-work> ls
//<No files / directories>

final var csq = """
        abcd
        XYZ
        12345
        """;

final var ret = Files.writeString(path, csq);
System.out.println(ret); // D:\java-work\aaa.txt
System.out.println(Files.readAllLines(path)); // [abcd, XYZ, 12345]

Related posts

To top of page