web-dev-qa-db-fra.com

Comment créer un fichier dans un répertoire en java?

Si je veux créer un fichier dans C:/a/b/test.txt, puis-je faire quelque chose comme:

File f = new File("C:/a/b/test.txt");

De plus, je souhaite utiliser FileOutputStream pour créer le fichier. Alors, comment pourrais-je le faire? Pour une raison quelconque, le fichier n'est pas créé dans le bon répertoire.

136
Uerefer

La meilleure façon de le faire est:

String path = "C:" + File.separator + "hello" + File.separator + "hi.txt";
// Use relative path for Unix systems
File f = new File(path);

f.getParentFile().mkdirs(); 
f.createNewFile();
218
RMT

Vous devez vous assurer que les répertoires parents existent avant d'écrire. Vous pouvez le faire par File#mkdirs() .

File f = new File("C:/a/b/test.txt");
f.getParentFile().mkdirs();
// ...
48
BalusC

Avec Java 7 , vous pouvez utiliser Path , Paths et Files :

import Java.io.IOException;
import Java.nio.file.FileAlreadyExistsException;
import Java.nio.file.Files;
import Java.nio.file.Path;
import Java.nio.file.Paths;

public class CreateFile {

    public static void main(String[] args) throws IOException {
        Path path = Paths.get("/tmp/foo/bar.txt");

        Files.createDirectories(path.getParent());

        try {
            Files.createFile(path);
        } catch (FileAlreadyExistsException e) {
            System.err.println("already exists: " + e.getMessage());
        }
    }
}
32
user1907906

Utilisation:

File f = new File("C:\\a\\b\\test.txt");
f.mkdirs();
f.createNewFile();

Remarquez que j'ai modifié les barres obliques pour les doubler pour les chemins dans le système de fichiers Windows. Cela créera un fichier vide sur le chemin donné.

11
Marcelo

Une façon plus simple et plus efficace de le faire:

File f = new File("C:/a/b/test.txt");
if(!f.exists()){
   f.createNewFile();
}

La source

1
Mehdi
String path = "C:"+File.separator+"hello";
String fname= path+File.separator+"abc.txt";
    File f = new File(path);
    File f1 = new File(fname);

    f.mkdirs() ;
    try {
        f1.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Cela devrait créer un nouveau fichier dans un répertoire

1
Chitta

Créer un nouveau fichier dans le chemin spécifié

import Java.io.File;
import Java.io.IOException;

public class CreateNewFile {

    public static void main(String[] args) {
        try {
            File file = new File("d:/sampleFile.txt");
            if(file.createNewFile())
                System.out.println("File creation successfull");
            else
                System.out.println("Error while creating File, file already exists in specified path");
        }
        catch(IOException io) {
            io.printStackTrace();
        }
    }

}

Sortie du programme:

Création du fichier réussie 

0
AKHY

Étonnamment, beaucoup de réponses ne donnent pas un code de travail complet. C'est ici:

public static void createFile(String fullPath) throws IOException {
    File file = new File(fullPath);
    file.getParentFile().mkdirs();
    file.createNewFile();
}

public static void main(String [] args) throws Exception {
    String path = "C:/donkey/bray.txt";
    createFile(path);
}
0
MasterJoe2