Comment utiliser PrintWriter et les classes de fichiers en Java?

j'essaye de comprendre PrintWriter pour un petit programme que je fais, et je ne peux pas faire java pour faire le fichier et ensuite écrire dessus. Quand j'exécute le programme ci-dessous, il me donne une erreur Filenotfoundexeption sur la ligne 9. Il échoue aussi à rendre le fichier dans le répertoire que j'ai indiqué. Je suis nouveau sur ce donc, s'il vous plaît essayer et de garder les réponses simples. Je suis à l'aide d'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 ();       
  }
}
44
demandé sur user unknown 2012-07-16 04:06:33

10 réponses

Si le répertoire n'existe pas, vous devez le créer. Java ne le créera pas tout seul puisque le File classe est juste un lien vers une entité qui peut aussi ne pas exister du tout.

FileNotFoundException - si la chaîne de caractères donnée ne dénote pas un fichier régulier existant, et un nouveau fichier régulier de ce nom ne peut pas être créé, ou si une autre erreur se produit lors de l'ouverture ou de créer le 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
répondu Jack 2012-07-16 00:11:08
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 ();       
  }
}

lancer une exception pour le fichier.

8
répondu JeanGray 2012-10-09 05:05:33

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

PrintWriter printWriter = new PrintWriter(file);
5
répondu Eng.Fouad 2012-07-16 00:10:32
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();
            }
        }
    }
}
1
répondu richard 2012-08-11 06:37:25

Vous devriez avoir une idée claire des exceptions en java. En java, il y a des exceptions vérifiées et des exceptions non vérifiées.

les exceptions vérifiées sont vérifiées (pas jetées,juste vérifiées) par le compilateur au moment de la compilation pour l'exécution en douceur du programme au moment de l'exécution.

NOTE: et dans notre programme si leur est une chance qu'une exception cochée se lève, alors nous devrions gérer cette exception cochée soit par try catch soit par lancers key word.Sinon, nous aurons une Erreur de compilation:

CE:Inattendu Exception java.io.FileNotFoundException;doivent être pris ou déclarée à être jetés.

Comment résoudre: 1.Mettez votre code dans try catch block:

2.utilisation jette mot-clé comme indiqué par d'autres gars ci-dessus.

conseil: en savoir plus sur les Exceptions.(Personnellement, j'adore cette rubrique)

1
répondu Imran Rafiq Rather 2016-10-21 06:29:08

Java n'accepte pas normalement " / " à 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 de faire:

 try {
      file.createNewFile();
 }
 catch (IOException e) {
 e.printStackTrace();
 }
1
répondu Galen Nare 2018-08-28 14:10:12

Eh bien je pense tout d'abord garder tout principal dans try catch(ou vous pouvez utiliser comme public static void main(String arg[]) throws IOException ) et puis également utiliser le chemin complet du fichier dans lequel vous écrivez que

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

toutes ces directies comme users,Me,Desktop, directory devraient être faites par l'utilisateur. java ne fera pas ses propres répertoires. il faut que

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
répondu Rakesh Kumar 2013-03-13 05:12:49
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
répondu user3000441 2013-11-16 22:09:51

PrintWriter classe 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 de validité de l'encodage voir la documentation.

Alternativement, vous pouvez simplement passer le chemin d'accès au fichier PrintWriter classe sans déclarer l'encodage.

0
répondu Badr DRAIFI 2015-11-28 21:08:17

double cliquez sur le file.txt, puis de l'enregistrer, command + s, qui a fonctionné dans mon cas. Aussi, assurez-vous 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
répondu said aden 2017-10-05 19:42:07