web-dev-qa-db-fra.com

mkdir () ne crée pas le nouveau répertoire

J'utilise Eclipse et jdk1.7. Je réalise un programme de base en utilisant la gestion de fichiers, dans lequel un répertoire de sortie à l'intérieur du répertoire doit être créé. Mais lorsque j'exécute le programme, la sortie affiche false et le répertoire n'est pas créé. Je pensais que la sortie était fausse à cause de la présence d'un répertoire portant le même nom, mais ce n'est pas la raison. J'ai donc besoin d'aide. Voici mon code:

import Java.io.File;

public class P {
    public static void main(String[] args) {
        File f1 = new File ("abc");
        File f2 = new File (f1,"abc");
        System.out.println(f2.mkdir());
    }
}

Sa sortie est false et pourtant aucun répertoire n'a été créé. Comment puis-je résoudre ce problème? Ce n'est pas seulement dans ce programme - chaque programme dans lequel j'appelle la méthode mkdir() a le même problème.

13
user2529216

Vous devez utiliser mkdirs () avec un s si vous voulez créer plusieurs répertoires. Il est également probablement utile de vérifier que vous canWrite () à l'emplacement car certains emplacements sont autorisés. Les deux sont sur la classe File

27
RNJ

sa obj.mkdirs()

jetez un oeil à ceci:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());

La première impression ne crée pas de répertoire et renvoie false mais la seconde le fait et renvoie true

13
tokhi

Exemple de répertoire de création

il semble que vous ayez besoin de travailler un peu sur votre chemin car il ne semble pas que File déduise "abc".

Assurez-vous également que vous avez des autorisations sur le chemin que vous essayez de créer le répertoire. Si vous ne le faites pas, ça va échouer. Cela fait longtemps que je ne joue pas avec Java, donc je ne sais pas si vous devez faire appel à mkdir tout au long du chemin (par exemple/ici /,/ici/maintenant-ici /,/ici/maintenant- ici/final) ou pas. Pensez que cela peut être récursif, mais cela vaudrait la peine d'être vérifié.

En fait, en regardant les autres réponses, on dirait que mkdirs serait récursif, pas mkdir. J'irais avec mkdirs surtout si l'entrée n'est pas connue dès le départ, sinon vous finirez par écrire une fonction avec mkdir qui fait exactement la même chose. 

0
Robert

Dans votre cas, vous pouvez utiliser la méthode makedirectories dans la classe File.

File dir = new File("path name");
boolean isCreated = dir.mkdirs();

Ici, la méthode makedirectories créera tous les répertoires manquants dans le chemin représenté par l’objet fichier.

La source et la référence sont ci-dessous (expliquées en détail).

http://www.flowerbrackets.com/create-directory-Java-program/

https://docs.Oracle.com/javase/6/docs/api/Java/io/File.html#canWrite%28%29

0
Shiva

mkdir a besoin du chemin abstrait, pas du chemin relatif. Essayez d'utiliser...

File f2 = new File (f1, "C:\\");

... par exemple.

De Java DOC:

mkdir public booléen ()

Crée le répertoire nommé par ce chemin d'accès abstrait.

Résultats:

true si et seulement si le répertoire a été créé; faux sinon

Jette:

SecurityException - Si un gestionnaire de sécurité existe et que sa méthode SecurityManager.checkWrite (Java.lang.String) n'autorise pas la création du répertoire nommé

0
cristi