Java - ouvrir un fichier existant ou en créer un si n'existe pas à l'aide de IO flux
J'étais en suivant les instructions à partir d'un site web de Java (http://java.sun.com/docs/books/tutorial/essential/io/file.html#createStream) sur la création ou l'écriture d'un fichier à l'aide d'un groupe ar. Toutefois, le code qu'il donne semble être cassé en plusieurs endroits:
import static java.nio.file.StandardOpenOption.*;
Path logfile = ...;
//Convert the string to a byte array.
String s = ...;
byte data[] = s.getBytes();
OutputStream out = null;
try {
out = new BufferedOutputStream(logfile.newOutputStream(CREATE, APPEND));
...
out.write(data, 0, data.length);
} catch (IOException x) {
System.err.println(x);
} finally {
if (out != null) {
out.flush();
out.close();
}
}
Par exemple, Eclipse se bloque sur l'importation et sur l'utilisation du Chemin de classe, pour commencer. Cependant, ce tutoriel semble fournir exactement ce que je veux - je veux écrire dans un fichier si il existe (écraser) ou de créer un fichier s'il n'existe pas, et en fin de compte, je vais écrire avec un flux de sortie (qui est créé ici, à l'aide de l' .newOutputStream() la méthode). Création/écriture avec un flux de sortie semblait comme un candidat probable. Personne ne sait comment corriger le ci-dessus de sorte qu'il fonctionne, ou une meilleure façon de faire ce que je veux faire?
Vous devez vous connecter pour publier un commentaire.
Cet exemple semble être l'utilisation d'Api qui ne font pas partie de Sun Java 6.
Classe
Path
et le paquetjava.nio.file
font partie d'une API qui va être ajouté dans Sun JDK 7. Notez que le lien vers la documentation dePath
points à la documentation de l'API de OpenJDK, du Soleil, de développement open source version de Java.Donc, vous ne pouvez pas utiliser ces Api si vous utilisez régulièrement Sun Java 6.
Lisez l'avertissement sur la page d'accueil du tutoriel:
Dans Sun Java 6, vous pouvez utiliser
FileOutputStream
. Il va automatiquement créer un nouveau fichier si le fichier n'existe pas ou remplacer un fichier existant, si elle existe:Remarque: Pour l'écriture de fichiers texte (qu'est-ce que ce que vous semblez vouloir le faire), utiliser un
Writer
(par exempleFileWriter
) au lieu d'utiliser unOutputStream
directement. LeWriter
prendra soin de convertir le texte à l'aide d'un codage de caractères.Voir le Java SE 6 Documentation de l'API (en particulier les docs des paquets
java.io
) pour plus d'informations sur ce qui est disponible dans Java SE 6.