In meiner App muss ich einige externe SWF-Dateien laden. Ich benutzte folgenden Code:laden beschädigte SWF-Datei zeigte keinen Fehler
var file:File;
file = File.documentsDirectory.resolvePath("myfolder/myfile.swf");
if(file.exists)
{
var inFileStream:FileStream = new FileStream();
inFileStream.open(file, FileMode.READ);
var swfBytes:ByteArray = new ByteArray();
inFileStream.readBytes(swfBytes);
inFileStream.close();
var loaderContext:LoaderContext = new LoaderContext(false, new ApplicationDomain(null));
loaderContext.allowLoadBytesCodeExecution = true;
loaderContext.allowCodeImport = true;
myLoader = new Loader();
try
{
myLoader.loadBytes(swfBytes, loaderContext);
}
catch(e:Error)
{
trace("Can't read file.");
}
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadComplete_swf);
myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loop, false, 0, true);
myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,loadingError);
}
else
{
trace("File doesn't exists.");
}
Alles funktioniert gut. Aber ich habe kürzlich herausgefunden, dass einige meiner SWF-Dateien beschädigt sind. Wenn diese Dateien geladen werden, wird kein vollständiges Ereignis ausgelöst, und es wird auch kein Fehler ausgegeben. Also, meine Frage ist, gibt es eine Möglichkeit zu finden, ob SWF-Datei beschädigt ist oder nicht? Ja, ich kann diese beschädigten SWF-Dateien ersetzen. Dies ist nur eine Vorsichtsmaßnahme, wenn dieses Problem erneut auftritt. Im Moment kann ich nur daran denken, einen Timer zu erstellen und zu überprüfen, ob das komplette Ereignis versandt wird oder nicht. Wenn nicht, dann kann Dateinachricht nicht gelesen werden. Gibt es einen besseren Weg, damit umzugehen?
Um die Integrität der Datei zu testen, hash es und vergleichen Sie das Ergebnis mit Ihrem erwarteten Wert. blutige Krypto-Bibliothek wird empfohlen. – seventeen
Die Dokumentation gibt für einen solchen Fall das Ereignis IO_ERROR an. – Organis
@Organiss, IO_ERROR hat nicht ausgelöst. Es wird nur ausgelöst, wenn die Datei der Größe Null ist. – TheGunners