From 7ae7be52a029aeb6cb7c9df589cbca6dab8de75a Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Wed, 24 Oct 2018 21:52:13 +0200 Subject: [PATCH] Classe di test per le API nel package NIO.2 --- .vscode/launch.json | 11 ++ .../oracle/java8/professional/NIOTest.java | 115 ++++++++++++++++++ 2 files changed, 126 insertions(+) create mode 100644 src/com/oracle/java8/professional/NIOTest.java diff --git a/.vscode/launch.json b/.vscode/launch.json index 89e7ffb..5916c1e 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -1,5 +1,16 @@ { "configurations": [ + { + "type": "java", + "name": "CodeLens (Launch) - NIOTest", + "request": "launch", + "cwd": "${workspaceFolder}", + "console": "internalConsole", + "stopOnEntry": false, + "mainClass": "com.oracle.java8.professional.NIOTest", + "args": "", + "projectName": "OracleCertificationTest" + }, { "type": "java", "name": "CodeLens (Launch) - ConsoleTest", diff --git a/src/com/oracle/java8/professional/NIOTest.java b/src/com/oracle/java8/professional/NIOTest.java new file mode 100644 index 0000000..8ae6a80 --- /dev/null +++ b/src/com/oracle/java8/professional/NIOTest.java @@ -0,0 +1,115 @@ +package com.oracle.java8.professional; + +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.file.DirectoryStream; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.FileVisitOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.PathMatcher; +import java.nio.file.Paths; +import java.nio.file.attribute.BasicFileAttributeView; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.attribute.FileTime; +import java.nio.file.attribute.PosixFileAttributes; +import java.nio.file.attribute.PosixFilePermission; +import java.nio.file.attribute.PosixFilePermissions; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class NIOTest { + + public static void main(String[] args) throws Exception { + doUsingPathTest(); + doUsingAttributesTest(); + doUsingPosixAttributesTest(); + doUsingFileSystemVisitorTest(); + doUsingPathMatcherTest(); + } + + private static void doUsingPathTest() throws IOException { + Path path = Paths.get("file.txt"); + boolean exists = Files.exists(path); + System.out.println(exists); + if (exists) { + Files.delete(path); + } + + Files.createFile(path); + System.out.println(Files.exists(path)); + + Path path2 = Paths.get("/home/plague/casa"); + System.out.println("getFileName(): " + path2.getFileName()); + System.out.println("getName(1): " + path2.getName(1)); + System.out.println("getNameCount(): " + path2.getNameCount()); + System.out.println("getParent(): " + path2.getParent()); + System.out.println("getRoot(): " + path2.getRoot()); + System.out.println("subpath(0, 2): " + path2.subpath(0, 2)); + System.out.println("toString(): " + path2.toString()); + + int indentazione = 2; + Path myPath = Paths.get("myDir", "subdir1", "subdir2", "test.txt"); + for (Path scendi : myPath) { + System.out.format("%" + indentazione + "s%s%n", "", scendi); + indentazione += 2; + } + } + + private static void doUsingAttributesTest() throws IOException { + Path path = Paths.get("file.txt"); + BasicFileAttributes bfa = Files.readAttributes(path, BasicFileAttributes.class); + System.out.println("Data creazione: " + bfa.creationTime()); + System.out.println("Data ultimo accesso: " + bfa.lastAccessTime()); + System.out.println("Data ultima modifica: " + bfa.lastModifiedTime()); + System.out.println("E' una directory? " + bfa.isDirectory()); + + FileTime dataUltimaModifica = bfa.lastModifiedTime(); + FileTime dataCreazione = bfa.creationTime(); + FileTime ora = FileTime.fromMillis(System.currentTimeMillis()); + + BasicFileAttributeView bfaView = Files.getFileAttributeView(path, BasicFileAttributeView.class); + bfaView.setTimes(dataUltimaModifica, ora, dataCreazione); + } + + private static void doUsingPosixAttributesTest() throws IOException { + Path passwd = Paths.get("/home/plague/Documenti/passwd.gpg"); + PosixFileAttributes pfa = Files.readAttributes(passwd, PosixFileAttributes.class); + Set permessi = PosixFilePermissions.fromString("rw-r--r--"); + Files.setPosixFilePermissions(passwd, permessi); + System.out.println(pfa.permissions()); + System.out.println(pfa.group()); + } + + private static void doUsingFileSystemVisitorTest() throws IOException { + Path dir = Paths.get("/home/plague"); + try (DirectoryStream directoryStream = Files.newDirectoryStream(dir, "*[aeiou]")) { + System.out.println("["); + for (Path p : directoryStream) { + System.out.println(p.getFileName()); + } + System.out.println("]"); + } + + Path path = Paths.get("file.txt"); + Stream stream = Files.walk(Paths.get("/home/plague/exercism"), FileVisitOption.FOLLOW_LINKS); + PrintWriter pw = new PrintWriter(path.toFile()); + for (Path p : stream.collect(Collectors.toList())) { + pw.println(p.toString()); + } + } + + private static void doUsingPathMatcherTest() { + Path p1 = Paths.get("/home/myfile.txt"); + Path p2 = Paths.get("myfile.txt"); + matches(p1, "glob:*.txt"); + matches(p2, "glob:*.txt"); + } + + private static void matches(Path path, String glob) { + PathMatcher matcher = FileSystems.getDefault().getPathMatcher(glob); + System.out.println(matcher.matches(path)); + } +} \ No newline at end of file