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

156

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");

En outre, je souhaite utiliser FileOutputStreampour 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.

Uerefer
la source

Réponses:

245

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();
RMT
la source
35
Ne fonctionnera pas pour Linux car il n'y a pas de "C:" dans les systèmes Unix.
Marcelo
33
L'utilisation new File("/a/b/test.txt")fonctionne pour les deux systèmes. Sous Windows, il sera écrit sur le même disque que celui où JVM s'exécute.
BalusC
6
f.getParentFile().mkdirs(); f.createNewFile();
Patrick Bergner
1
N'oubliez pas de vérifier la méthode appelée (mkdirs et createNewFile) appelle des erreurs
Alessandro S.
1
if (! file.exists ()) f.createNewFile ();
Mehdi
50

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();
// ...
BalusC
la source
38

Avec Java 7 , vous pouvez utiliser Path, Pathset 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());
        }
    }
}

la source
12

Utilisation:

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

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

Marcelo
la source
1
Sous Windows, \\ et / sont valides. Ce createNewFile()n'est d'ailleurs pas nécessaire lorsque vous y écrivez de FileOutputStreamtoute façon.
BalusC
@Eric a noté et corrigé, merci.
Marcelo
Cela a créé un répertoire appelé test.txt au lieu de file.
MasterJoe2
3

Une façon meilleure et plus simple de faire cela:

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

La source

Mehdi
la source
2
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

Chitta
la source
0

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 de fichier réussie

AKHY
la source
0

Étonnamment, la plupart des 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);
}
MasterJoe2
la source
0

Pour créer un fichier et y écrire une chaîne:

BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get("Path to your file"));
bufferedWriter.write("Some string"); // to write some data
// bufferedWriter.write("");         // for empty file
bufferedWriter.close();

Cela fonctionne pour Mac et PC.

Kirill Ch
la source
0

Pour utiliser FileOutputStream, essayez ceci:

public class Main01{
    public static void main(String[] args) throws FileNotFoundException{
        FileOutputStream f = new FileOutputStream("file.txt");
        PrintStream p = new PrintStream(f);
        p.println("George.........");
        p.println("Alain..........");
        p.println("Gerard.........");
        p.close();
        f.close();
    }
}
Fridjato Partie Fridjat
la source