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