Classe di test per le API nel package NIO.2

This commit is contained in:
Fabio Scotto di Santolo
2018-10-24 21:52:13 +02:00
parent 41dbf59723
commit 7ae7be52a0
2 changed files with 126 additions and 0 deletions

11
.vscode/launch.json vendored
View File

@@ -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",

View File

@@ -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<PosixFilePermission> 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<Path> 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<Path> 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));
}
}