Come creare un file in una directory in Java?


156

Se voglio creare un file C:/a/b/test.txt, posso fare qualcosa del tipo:

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

Inoltre, voglio usare FileOutputStreamper creare il file. Quindi come lo farei? Per qualche motivo il file non viene creato nella directory giusta.

Risposte:


245

Il modo migliore per farlo è:

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

35
Non funzionerà per Linux perché non esiste "C:" nei sistemi unix.
Marcelo,

33
Utilizzando new File("/a/b/test.txt")funziona per entrambi i sistemi. Su Windows, verrà scritto sullo stesso disco in cui è in esecuzione JVM.
BalusC,

6
f.getParentFile().mkdirs(); f.createNewFile();
Patrick Bergner,

1
Non dimenticare di controllare gli errori del metodo chiamato (mkdirs e createNewFile)
Alessandro S.

1
if (! file.exists ()) f.createNewFile ();
Mehdi,

50

È necessario assicurarsi che le directory principali esistano prima di scrivere. Puoi farlo entro File#mkdirs().

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

38

Con Java 7 , è possibile utilizzare Path, Pathse 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());
        }
    }
}

12

Uso:

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

Si noti che ho cambiato le barre in avanti per raddoppiare le barre per i percorsi nel file system di Windows. Questo creerà un file vuoto sul percorso indicato.


1
Su Windows, sia \\ che / sono validi. È comunque createNewFile()superfluo quando ci scrivi FileOutputStreamcomunque.
BalusC,

@Eric notato e corretto, grazie.
Marcelo,

Questo ha creato una directory chiamata test.txt invece del file.
MasterJoe2,

3

Un modo migliore e più semplice per farlo:

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

fonte


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();
    }
}

Questo dovrebbe creare un nuovo file all'interno di una directory


0

Crea nuovo file nel percorso specificato

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();
        }
    }

}

Uscita del programma:

Creazione file riuscita


0

Sorprendentemente, molte delle risposte non forniscono un codice di lavoro completo. Ecco qui:

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

Per creare un file e scrivere una stringa lì:

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

Questo funziona per Mac e PC.


0

Per utilizzare FileOutputStream prova questo:

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();
    }
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.