我正在使用 adobe flash cs6 来创建桌面应用程序。在该应用程序中,我使用 flash.filesystem.filestream 来保存文本文件 (我不想使用 FileReference ,因为我不想显示保存对话框) 当我在导出的 .swf 或 .exe 文件中调用新的FileStream()时,应用程序停止运行它关闭了窗户。 这是执行此行时的示例代码 var fileStream:FileStream = new FileStream(); 窗口自动关闭,但此代码在预览模式下正常工作 (ctrl + Enter)iam使用 目标:AIR 2.5; 脚本:ActionScript 3.0 在发布设置中。
sample.as
package{
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.filesystem.FileMode;
public class SampleClass {
public function generateReport (text : String) : void
{
var fileMode:String = (FileMode.APPEND);
var fileStream : FileStream = new FileStream();
var file:File = File.desktopDirectory.resolvePath("sample.txt");
fileStream.open (file, fileMode);
fileStream.writeMultiByte (text, File.systemCharset);
fileStream.close ();
}
}
}
有什么方法可以解决这个问题吗? 非常感谢你!
普拉
答案 0 :(得分:1)
我不知道text
的内容是什么,但是从.writeMultiByte (text, File.systemCharset);
我想你想写非英文字母字符?
最好只使用.writeUTFBytes
,因为它可以同时处理英语和外国字母表。
Anycase ...看看此代码重新修复SampleClass.as
是否适合您(在没有崩溃 .exe 的情况下进行测试):
package{
import flash.filesystem.File;
import flash.filesystem.FileStream;
import flash.filesystem.FileMode;
import flash.display.MovieClip;
public class SampleClass extends MovieClip {
public function SampleClass ()
{
generateReport("test Chinese : 你好 世界 ... test Urdu : ہیلو دنیا ... test Russian : Привет мир");
}
public function generateReport (text : String) : void
{
var fileMode:String = "append"; //not... String = (FileMode.APPEND);
var fileStream : FileStream = new FileStream();
var file:File = File.desktopDirectory.resolvePath("sample.txt");
fileStream.open (file, fileMode);
//fileStream.writeMultiByte (text, File.systemCharset); //trying non-English chars??
fileStream.writeUTFBytes(text); //UTF is Unicode so can handle non-English chars
fileStream.close();
//trace("Text Done... check file \"sample.txt\" in Desktop");
}
} //end Class
} //end Package