Comment écrire un fichier texte Java
Le code suivant Ne produit pas de fichier (je ne peux pas voir le fichier n'importe où). Ce qui est absent?
try {
//create a temporary file
String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format(
Calendar.getInstance().getTime());
File logFile=new File(timeLog);
BufferedWriter writer = new BufferedWriter(new FileWriter(logFile));
writer.write (string);
//Close writer
writer.close();
} catch(Exception e) {
e.printStackTrace();
}
6 réponses
Je pense que vos attentes et la réalité ne correspondent pas (mais quand le font-ils jamais;))
Fondamentalement, où vous pensez que le fichier est écrit et où le fichier est réellement écrit ne sont pas égaux (hmmm, peut - être que je devrais écrire une déclaration if
;))
public class TestWriteFile {
public static void main(String[] args) {
BufferedWriter writer = null;
try {
//create a temporary file
String timeLog = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
File logFile = new File(timeLog);
// This will output the full path where the file will be written to...
System.out.println(logFile.getCanonicalPath());
writer = new BufferedWriter(new FileWriter(logFile));
writer.write("Hello world!");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// Close the writer regardless of what happens...
writer.close();
} catch (Exception e) {
}
}
}
}
Notez également que votre exemple écrasera tous les fichiers existants. Si vous voulez ajouter le texte au fichier, vous devez faire ce qui suit à la place:
writer = new BufferedWriter(new FileWriter(logFile, true));
Je voudrais ajouter un peu plus à la réponse de MadProgrammer.
En cas d'écriture de plusieurs lignes, lors de l'exécution de la commande
writer.write(string);
On peut remarquer que les caractères de saut de ligne sont omis ou ignorés dans le fichier écrit même s'ils apparaissent pendant le débogage ou si le même texte est imprimé sur le terminal avec,
System.out.println("\n");
Ainsi, le texte entier se présente comme un gros morceau de texte qui n'est pas souhaitable dans la plupart des cas. Le caractère de retour à la ligne peut dépendre plate-forme, il est donc préférable d'obtenir ce caractère à partir des propriétés du système java en utilisant
String newline = System.getProperty("line.separator");
Et ensuite en utilisant la variable newline au lieu de "\n". Cela obtiendra la sortie comme vous le souhaitez.
En java 7 peut maintenant faire
try(BufferedWriter w = ....)
{
w.write(...);
}
catch(IOException)
{
}
Et W. close se fera automatiquement
Il ne crée pas de fichier car vous n'avez jamais créé le fichier. Tu as fait un objet pour ça. La création d'une instance ne crée pas le fichier.
File newFile = new File("directory", "fileName.txt");
Vous pouvez le faire pour créer un fichier:
newFile.createNewFile();
Vous pouvez le faire pour créer un dossier:
newFile.mkdir();
Ça marche avec moi. Assurez-vous que vous ajoutez ".txt" à côté de logtemps. Je l'ai utilisé dans un programme simple ouvert avec Netbeans et il écrit le programme dans le dossier principal (où les dossiers builder et src sont).