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 ();
}
}
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);
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.
Passez l'objet File au constructeur PrintWriter(File file)
:
PrintWriter printWriter = new PrintWriter(file);
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();
}
}
}
}
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)
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();
}
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();
}
}
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();
}
}
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
}
}
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.
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.