#actionscript-3 #apache-flex #safari #flash-builder #webarchive
#actionscript-3 #apache-flex #safari #flash-builder #webarchive
Вопрос:
Я создаю приложение AIR с использованием Actionscript и хочу программно вставить фрагмент текста в файл .webarchive. Проблема в том, что каждый раз, когда я вставляю текст, файл каким-то образом повреждается. Код, который я использую, выглядит следующим образом:
var stream:FileStream = new FileStream();
stream.open(file, FileMode.READ);
var body:ByteArray = new ByteArray();
stream.readBytes(body, file.size);
var result:Array = pattern.exec(body.toString());
var new_body:String;
new_body = body.toString().replace(pattern, "replacing text here!</body>");
stream.close();
stream.open(file, FileMode.WRITE);
stream.writeUTFBytes(new_body);
stream.close();
Я предполагаю, что проблема связана с кодировкой .файл webarchive. Есть ли у кого-нибудь идеи о том, как это исправить? Заранее спасибо!
Ответ №1:
Вы всегда должны использовать stream.readUTFBytes()
или stream.readUTF()
при чтении текстовой информации из файлов. Я предполагаю, что некоторые актуальные проблемы с кодированием возникают при преобразовании байтов в строку в вашем коде. Правильный код будет:
var stream:FileStream = new FileStream();
stream.open(file, FileMode.READ);
var body:String = stream.readUTFBytes(stream.bytesAvailable);
stream.close();
var new_body:String = body.replace(pattern, "replacing text here!</body>");
stream.open(file, FileMode.WRITE);
stream.writeUTFBytes(new_body);
stream.close();