web-dev-qa-db-fra.com

Comment utiliser les classes PrintWriter et File en Java?

J'essaie de comprendre PrintWriter pour un petit programme que je crée, et je n'arrive pas à faire en sorte que Java crée le fichier puis l'écrit. Lorsque j'exécute le programme ci-dessous, une erreur Filenotfoundexeption apparaît à la ligne 9 et le fichier ne figure pas dans le répertoire que j'ai spécifié. Je suis nouveau dans ce domaine, alors essayez de garder les réponses simples. J'utilise Eclipse.

import Java.io.PrintWriter;
import Java.io.File;

public class Testing {

  public static void main(String[] args) {

    File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
    PrintWriter printWriter = new PrintWriter ("file.txt");
    printWriter.println ("hello");
    printWriter.close ();       
  }
}
47
SPARK

Si le répertoire n'existe pas, vous devez le créer. Java ne le créera pas par lui-même car la classe File est simplement un lien vers une entité qui peut également ne pas exister du tout.

Comme vous l'avez dit, l'erreur est que le fichier ne peut pas être créé. Si vous lisez la documentation du constructeur PrintWriter, vous pouvez voir

FileNotFoundException - Si la chaîne donnée ne désigne pas un fichier régulier inscriptible existant et si un nouveau fichier standard portant ce nom ne peut pas être créé, ou si une autre erreur se produit lors de l'ouverture ou de la création du fichier

Vous devriez essayer de créer un chemin pour le dossier qu'il contient avant:

File file = new File("C:/Users/Me/Desktop/directory/file.txt");
file.getParentFile().mkdirs();

PrintWriter printWriter = new PrintWriter(file);
66
Jack
import Java.io.PrintWriter;
import Java.io.File;

public class Testing {

  public static void main(String[] args) throws IOException {

    File file = new File ("C:/Users/Me/Desktop/directory/file.txt");
    PrintWriter printWriter = new PrintWriter ("file.txt");
    printWriter.println ("hello");
    printWriter.close ();       
  }
}

jette une exception pour le fichier.

9
JeanGray

Passez l'objet File au constructeur PrintWriter(File file) :

PrintWriter printWriter = new PrintWriter(file);
5
Eng.Fouad
import Java.io.File;
import Java.io.PrintWriter;

public class Testing 
{
    public static void main(String[] args) 
    {

        File file = new File("C:/Users/Me/Desktop/directory/file.txt");

        PrintWriter printWriter = null;

        try
        {
            printWriter = new PrintWriter(file);
            printWriter.println("hello");
        }
        catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
        finally
        {
            if ( printWriter != null ) 
            {
                printWriter.close();
            }
        }
    }
}
3
richard

Vous devriez avoir une idée précise des exceptions dans Java . En Java, il existe des exceptions vérifiées et des exceptions non vérifiées.

Les exceptions vérifiées sont vérifiées (pas levées, mais juste vérifiées) par le compilateur au moment de la compilation pour l'exécution sans heurt du programme au moment de l'exécution.

NOTE: Et dans notre programme, s'il y a une chance qu'une exception vérifiée augmente, alors nous devrions gérer cette exception vérifiée soit en essayant catch, soit en jetant la clé Word. Sinon, nous aurons un temps de compilation. Erreur:

CE: Exception inattendue Java.io.FileNotFoundException: doit être interceptée ou déclarée comme étant émise.

Comment résoudre: 1.Insérez votre code dans le bloc catch:

2.use lance le mot clé comme indiqué par les autres gars ci-dessus.

Conseil: En savoir plus sur les exceptions (j'aime personnellement ce sujet)

1
Imran Rafiq Rather

Java n'accepte normalement pas "/" à utiliser pour définir un répertoire de fichiers, alors essayez ceci:

 File file = new File ("C:\\Users\\user\\workspace\\FileTester\\myFile.txt");

Si le fichier n'existe pas, faites:

 try {
      file.createNewFile();
 }
 catch (IOException e) {
 e.printStackTrace();
 }
1
Galen Nare

Si vous voulez utiliser PrintWrite, essayez ce code 

public class PrintWriter {
    public static void main(String[] args) throws IOException {

        Java.io.PrintWriter pw=new Java.io.PrintWriter("file.txt");
        pw.println("hello world");
        pw.flush();
        pw.close();

    }

}
0
Pratik Ghosh

Eh bien, je pense d’abord garder l’essentiel dans try catch (ou vous pouvez utiliser public static void main(String arg[]) throws IOException ) et utiliser également le chemin complet du fichier dans

PrintWriter printWriter = new PrintWriter ("C:/Users/Me/Desktop/directory/file.txt");

toutes les répertoires tels que les utilisateurs, moi, le bureau, le répertoire doivent être créés par l'utilisateur. Java ne fera pas que les répertoires possèdent leurs propres . Ce devrait être comme

import Java.io.*;
public class PrintWriterClass {

public static void main(String arg[]) throws IOException{
    PrintWriter pw = new PrintWriter("C:/Users/Me/Desktop/directory/file.txt");
    pw.println("hiiiiiii");
    pw.close();
}   

}
0
Rakesh Kumar
import Java.io.*;

public class test{
    public static void main(Strings []args){

       PrintWriter pw = new PrintWriter(new file("C:/Users/Me/Desktop/directory/file.txt"));

       pw.println("hello");
       pw.close
    }

}

0
user3000441

La classe PrintWriter peut créer le fichier pour vous. 

Cet exemple fonctionne dans JDK 1.7+.

// This will create the file.txt in your working directory.

PrintWriter printWriter = null;

try {

    printWriter = new PrintWriter("file.txt", "UTF-8");
    // The second parameter determines the encoding. It can be
    // any valid encoding, but I used UTF-8 as an example.

} catch (FileNotFoundException | UnsupportedEncodingException error) {
    error.printStackTrace();
}

printWriter.println("Write whatever you like in your file.txt");

// Make sure to close the printWriter object otherwise nothing
// will be written to your file.txt and it will be blank.
printWriter.close();

Pour une liste des encodages valides, voir la documentation.

Sinon, vous pouvez simplement passer le chemin du fichier à la classe PrintWriter sans déclarer le codage.

0
Badr DRAIFI

Double-cliquez sur le file.txt, puis enregistrez-le, command + s, qui a fonctionné dans mon cas. Assurez-vous également que le file.txt est enregistré dans le dossier du projet .Si cela ne fonctionne pas.

PrintWriter pw = new PrintWriter(new File("file.txt"));
pw.println("hello world"); // to test if it works.
0
said aden