Se di sicurezza/permessi è una ragione, allora perché è SecurityException non torta (che è menzionato nel javadoc)?
Un SecurityException
viene generata quando non si dispone di un'autorizzazione a livello di JVM di fare qualcosa, non OS-livello
C'è un modo per trovare il motivo esatto per cui di ritorno falso?
No, AFAIK. L'unico modo per sapere sarebbe controllare le autorizzazioni sulla directory da solo, assicurarsi che non esistano prima di chiamarle, controllare se la directory principale esiste, ecc.
Tuttavia, se si utilizza Java 7 o superiore, è possibile utilizzare NIO invece per creare la directory. In particolare, Files.createDirectory
:
File dir = new File("mydir");
Files.createDirectory(dir.toPath());
Se si desidera utilizzare NIO del tutto con l'utilizzo di java.io.File
, è possibile utilizzare per creare un Paths.get
Path
invece:
Path dir = Paths.get("mydir");
Files.createDirectory(dir);
In entrambi i casi, se la directory non può essere creato, genererà un IOException
con un motivo preciso per cui l'operazione non è riuscita.
Questo è vero per la maggior parte dei metodi in Files
, pertanto è consigliabile utilizzarlo per utilizzare i metodi nella classe File
.
Con "mkdir", se si sta tentando di mkdir ("/ percorso1/percorso2 /"); e la cartella path1 (parent) non esisteva prima di eseguire il comando, l'mkdir fallirà, può solo creare una nuova cartella all'interno di una cartella esistente, mkdirs può creare tutte le cartelle - path1 e path2. Non ho idea del fallimento degli mkdir. Spero che aiuti – Andiana
@Andiana corretto. Questo perché 'File.mkdir' di Java segue le convenzioni di Linux invece delle convenzioni di Windows e non crea directory intermedie. 'File.mkdirs' segue le convenzioni di Windows e si comporta come' mkdir --parents' in Linux. Buon punto Tuttavia, per ottenere il motivo esatto, la risposta di Michael qui sotto è la migliore: utilizzare i pacchetti NIO di Java. – Brian