Perché il codice seguente gira solo su Windows 8 e non su Ubuntu? Sul libro c'è scritto di provare a sostituire Basis con Posix ma non c'è verso. Il file test si trova in un disco dedicato solo al salvataggio dei dati e partizionato con file NTFS.
codice:
// Obtain information about a path and a file.
// Requires JDK 7 or later.
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.*;
class Esempio {
public static void main(String args[]) {
Path filepath = Paths.get("examples\\test.txt");
System.out.println("File Name: " + filepath.getName(1));
System.out.println("Path: " + filepath);
System.out.println("Absolute Path: " + filepath.toAbsolutePath());
System.out.println("Parent: " + filepath.getParent());
if(Files.exists(filepath))
System.out.println("File exists");
else
System.out.println("File does not exist");
try {
if(Files.isHidden(filepath))
System.out.println("File is hidden");
else
System.out.println("File is not hidden");
} catch(IOException e) {
System.out.println("I/O Error: " + e);
}
Files.isWritable(filepath);
System.out.println("File is writeable");
Files.isReadable(filepath);
System.out.println("File is readable");
try {
BasicFileAttributes attribs =
Files.readAttributes(filepath, BasicFileAttributes.class);
if(attribs.isDirectory())
System.out.println("The file is a directory");
else
System.out.println("The file is not a directory");
if(attribs.isRegularFile())
System.out.println("The file is a normal file");
else
System.out.println("The file is not a normal file");
if(attribs.isSymbolicLink())
System.out.println("The file is a symbolic link");
else
System.out.println("The file is not a symbolic link");
System.out.println("File last modified: " + attribs.lastModifiedTime());
System.out.println("File size: " + attribs.size() + " Bytes");
} catch(IOException e) {
System.out.println("Error reading attributes: " + e);
}
}
}

Su Ubuntu + Eclipce ottengo:
codice:
Exception in thread "main" java.lang.IllegalArgumentException
at sun.nio.fs.UnixPath.getName(UnixPath.java:323)
at sun.nio.fs.UnixPath.getName(UnixPath.java:43)
at Esempio.main(Esempio.java:12)