Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    NIO: Con Windows 8 funzione mentre con Ubuntu no! :(

    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)
    Ultima modifica di giannino1995; 19-11-2013 a 19:50

  2. #2
    L'errore è nel percorso specificato nella Paths.get.
    Il separatore di percorsi nativo su Windows è \ (che nelle stringhe viene scritto \\), mentre sui sistemi POSIX è /; se scrivi codice multipiattaforma ti conviene usare sempre /, dato che lo supporta anche Windows, mentre i sistemi POSIX non supportano /.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Io aggiungo che quel Paths.get è stato fatto apposta per poter avere un numero variabile di argomenti, ognuno che rappresenta un "pezzo" del path, senza alcun separatore specifico.

    Paths.get("examples", "test.txt")

    Questo dovrebbe funzionare indipendentemente dal S.O.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    bene, problema risolto, mille grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.