Java: нежелательные символы в начале файла как результат сериализации - PullRequest
2 голосов
/ 10 мая 2010

когда я пишу новый текстовый файл на Java, я получаю следующие символы в начале файла:

¨Ìt

Это код:

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

спасибо

Ответы [ 4 ]

4 голосов
/ 10 мая 2010

ObjectOutputStreams не предназначены для написания «текстовых файлов».Они используются специально для записи промежуточного представления объектов Java на диск.Этот процесс известен как сериализация.

Скорее всего, вы хотите использовать Writer, который более полезен для создания текстовых файлов, удобочитаемых человеком.В частности, вы должны посмотреть на FileWriter и / или PrintWriter .

3 голосов
/ 10 мая 2010
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();

Я надеюсь, что с этим Вы можете понять, как это сделать.

3 голосов
/ 10 мая 2010

При использовании ObjectOutputStream вы производите двоичную сериализацию вашего объекта. Вы вообще не должны просматривать файл как «текстовый файл».

Если вы хотите сериализовать ваш объект в удобочитаемом виде, используйте java.beans.XMLEncoder. Прочтите связанные документы о том, как использовать его аналогично ObjectOutputStream. Он производит XML.

2 голосов
/ 10 мая 2010

Вы не пишете текст в файл, вы пишете в него объекты, что означает, что вы получаете заголовок потока, информацию о типе и внутреннюю структуру. Чтобы написать текст, используйте Writer:

Writer w = new OutputStreamWriter(new FileOutputStream(filename), encoding);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...