Mam ciąg znaków wpisany przez użytkownika i chcę go zapisać w pliku na dysku twardym użytkowników. Możesz to zrobić? A jeśli tak, to w jaki sposób?Jak można zapisać ciąg w pliku w AS3?
Odpowiedz
Tak, można, z FileReference. Jest to w zasadzie jak to się robi:
var bytes:ByteArray = new ByteArray();
var fileRef:FileReference=new FileReference();
fileRef.save("fileContent", "fileName");
Nie wygląda zbyt trudne, prawda? A oto wideo-tutorial na niej zbyt:
http://www.gotoandlearn.com/play?id=76
a dokumentacja:
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/
nadzieję, że pomoże.
Ponadto trzeba mieć Flash Player 10 i Flex SDK Gumbo zainstalowany w Flex Builder 3.
Można też rzucić okiem na poniższy przykład: http://blog.flexexamples.com/2008/08/25/saving-files-locally-using-the-filereference-classs-save-method-in-flash-player-10/
w Flex 3 bez ciebie nie można tego zrobić, chyba że przesłać plik na serwer, a następnie pobrać plik za pośrednictwem adresu URL na pulpit.
W trybie Air or Flex 4 można zapisać go bezpośrednio z aplikacji na pulpicie, jak opisano powyżej.
Ponieważ miałem funkcję do bajtów wyjściowych do pliku (ponieważ robię coś z bitmap), I ponownego wykorzystania go do produkcji ciąg, a także, jak to:
var filename:String = "/Users/me/path/to/file.txt"; var byteArray:ByteArray = new ByteArray(); byteArray.writeUTFBytes(someString); outFile(filename, byteArray); private static function outFile(fileName:String, data:ByteArray):void { var outFile:File = File.desktopDirectory; // dest folder is desktop outFile = outFile.resolvePath(fileName); // name of file to write var outStream:FileStream = new FileStream(); // open output file stream in WRITE mode outStream.open(outFile, FileMode.WRITE); // write out the file outStream.writeBytes(data, 0, data.length); // close it outStream.close(); }
link podany jest martwy połączyć – Yozef