2010-05-10 4 views
2

quand j'écris un nouveau fichier texte en Java, je reçois ces personnages au début du fichier:Java: caractères indésirables au début d'un fichier en tant que résultat de sérialisation

¨Ìt 

Voici le code:

public static void writeMAP(String filename, Object object) throws IOException { 
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename)); 
    oos.writeObject(object); 
    oos.close(); 
} 

grâce

+1

_how_ écrivez-vous le fichier texte? – Bozho

+2

Ce n'est pas un fichier texte. Vous numérisez des objets à l'aide d'ObjectOutputStream, vous ne pouvez donc pas vous attendre à ce que le contenu soit du texte. –

Répondre

3
Writer output = null; 
String text = "Www.criandcric.com. is my site"; 
File file = new File("write.txt"); 
output = new BufferedWriter(new FileWriter(file)); 
output.write(text); 
output.close(); 

Je l'espère avec ceci Vous pouvez avoir une idée de comment faire cela.

+0

Et ce qui est, si je veux utiliser un objet et pas une chaîne? – leonkuehn

3

Lorsque vous utilisez ObjectOutputStream vous faire sérialisation binaire de votre objet. Vous n'êtes pas censé voir le fichier comme un "fichier texte".

Si vous souhaitez sérialiser votre objet de façon lisible par l'utilisateur, utilisez java.beans.XMLEncoder. Lisez les documents liés sur la façon de l'utiliser de manière similaire à ObjectOutputStream. Il produit du XML.

2

Vous n'écrivez pas de texte dans le fichier, vous y écrivez des objets, ce qui signifie que vous obtenez un en-tête de flux, des informations de type et une structure interne. Pour écrire un texte, utilisez un écrivain:

Writer w = new OutputStreamWriter(new FileOutputStream(filename), encoding); 
+0

Il est probablement plus propre d'utiliser un FileWriter pour écrire du texte, pour simplifier la gestion de l'encodage non-ASCII. –

+2

@Steven: FileWriter est inutile car il n'autorise pas du tout le traitement correct des encodages - il utilisera toujours le codage par défaut de la plate-forme. –

4

ObjectOutputStreams sont pas destinés à l'écriture « des fichiers texte. » Ils sont utilisés spécifiquement pour écrire une représentation intermédiaire des objets Java sur le disque. Ce processus est connu sous le nom de sérialisation.

Vous voudrez probablement utiliser un enregistreur, qui est plus utile pour créer des fichiers texte lisibles par l'utilisateur. En particulier, vous devriez regarder FileWriter et/ou PrintWriter.

Questions connexes