web-dev-qa-db-fra.com

Java - Comment puis-je écrire un fichier dans un répertoire spécifié

Je veux écrire un fichier results.txt dans un répertoire spécifique de ma machine (Z:\results pour être précis). Comment puis-je spécifier le répertoire dans BufferedWriter/FileWriter?

Actuellement, le fichier est écrit avec succès, mais dans le répertoire où se trouve mon code source. Merci

    public void writefile(){

    try{
        Writer output = null;
        File file = new File("results.txt");
        output = new BufferedWriter(new FileWriter(file));

        for(int i=0; i<100; i++){
           //CODE TO FETCH RESULTS AND WRITE FILE
        }

        output.close();
        System.out.println("File has been written");

    }catch(Exception e){
        System.out.println("Could not create file");
    }
}
28
user726219

Utilisation:

File file = new File("Z:\\results\\results.txt");

Vous devez doubler les barres obliques inverses dans Windows car le caractère de la barre oblique inversée est lui-même un échappement dans Java chaînes littérales.

Pour un système POSIX tel que Linux, utilisez simplement le chemin du fichier par défaut sans doubler la barre oblique. En effet, la barre oblique n'est pas un caractère d'échappement en Java.

File file = new File("/home/userName/Documents/results.txt");
27
Greg Hewgill

Vous devez utiliser le constructeur secondaire pour File pour spécifier le répertoire dans lequel il doit être créé de manière symbolique. Ceci est important car les réponses qui demandent de créer un fichier en ajoutant le nom de répertoire au nom d'origine ne sont pas aussi indépendantes du système que cette méthode.

Exemple de code:

String dirName = /* something to pull specified dir from input */;

String fileName = "test.txt";
File dir = new File (dirName);
File actualFile = new File (dir, fileName);

/* rest is the same */

J'espère que ça aide.

35
Kaushik Shankar

Il suffit de mettre l'emplacement complet du répertoire dans l'objet File.

File file = new File("z:\\results.txt");
4
Collin Price

La meilleure pratique consiste à utiliser File.separator dans les chemins.

2
TillTheDayIDie