2015-01-10 13 views
10

Qual è il modo Java 7 o Java 8 per creare un file se questo non esiste?Pulire Java 7 modo per creare il file se non esiste

+1

AFAIK Java 8 non cambia il modo in cui lavoriamo con i file. – alfasin

+1

@alfasin Java 7 (e quindi anche Java 8) lo ha cambiato immensamente con java.nio.file; e oggi, sfortunatamente, è ancora sottoutilizzato – fge

+0

@fge Abbastanza vero. Lo rimuoverò. – Biffen

risposta

20

Non sei sicuro di quello che si vuole, ma per esempio:

try { 
    Files.createFile(thePath); 
} catch (FileAlreadyExistsException ignored) { 
} 

E ci sono altre soluzioni; per esempio:

if (!Files.exists(thePath, LinkOption.NOFOLLOW_LINKS)) 
    Files.createFile(thePath); 

Si noti che diversamente File, questi saranno generare eccezioni se la creazione di file non riesce! E quelli rilevanti (ad esempio, AccessDeniedException, ReadOnlyFileSystemException, ecc. Ecc.)

Vedere here per ulteriori informazioni. Vedi anche why you should migrate to java.nio.file, quickly.

+0

Quindi non esiste un codice di linea per farlo? – emotionull

+2

No, ma è davvero importante? ;) Puoi semplicemente creare il tuo metodo di utilità se vuoi, questo non è proprio un problema – fge

+2

provare {Files.createFile (thePath); } catch (FileAlreadyExistsException ignorato) {} – mac01021

1

Si può fare

File f = new File("pathToYourFile"); 
if(!f.exists() && !f.isDirectory()) 
{ 
    f.createNewFile() 
} 

Se si desidera utilizzare NIO.2 è possibile utilizzare i metodi della classe file.

boolean exists(Path path,LinkOption. . . options) 
Path createTempFile(Path dir, String prefix,String suffix, FileAttribute<?>. . . attrs) 
createFile(Path path, FileAttribute<?>... attrs) 

Come fge ha accennato nei commenti createNewFile() metodi restituisce boolean valore che indica se il file è stato effettivamente creato o meno. Sfortunatamente non c'è modo di sapere perché ha fallito. In effetti, questo è uno dei motivi per cui sono state introdotte le API di I/O NIO.2.

+1

E ... Non si controlla il risultato di '.createNewFile()'! – fge