2013-11-12 1 views
0

В настоящее время я пытаюсь манипулировать файлами майя 2008 (.md) с Java. Внутри этих файлов есть некоторый отрывок в тексте, который я должен заменить. «MY15» должен быть преобразован в «MY16». После того, как я заменил эту подстроку, она будет записана в новый файл.? добавлено в outputstream - проблема с кодировкой?

Поскольку новый файл не открывается в Maya, я просто копирую данный файл в новый файл. Если я открою эти два файла в инструменте diff, то получаю разницу, даже если я ничего не заменю в этих файлах.

Например:

"[email protected]@ATTRda" становится "[email protected][email protected]"

Но не все @ элементы заменяются [email protected].

(Другой пример: >ãÁ@ ->>?ãÁ@)

Я создаю эти файлы с PrintWriter.

in = new FileReader(new File(inputPath)); 
writer = new PrintWriter(outpath, in.getEncoding()); 
writer.print(content); 
writer.flush(); 
writer.close(); 

Что является ошибкой внутри кода?

+0

Это текстовые данные формата файла, а не двоичные данные? – Kayaman

ответ

0

Я предполагаю, что вы имеете в виду «.mb» (вместо «.md»). Это двоичный формат файла, который содержит двоичные данные, а не текстовые данные. Поэтому чтение его с помощью FileReader не будет работать, поскольку оно преобразует все байты файла в текст, который не имеет смысла!

Вместо этого вы должны использовать FileInputStream и работать с байтами вместо символов.

+0

Я подумал об этом, но не нашел способ заменить данную строку «MY15» новой строкой «MY16» в FileInputStream. Есть ли возможность? – Stefan

+0

Значит, «.mb» правильно? – isnot2bad

+0

это «.mb» правильно - я сожалею о буквальной ошибке – Stefan