在 .exe 文件中执行 Filesteam 操作时,Adobe flash cs6 输出 window 自动关闭,但它在 flash 调试模式下工作正常

Adobe flash cs6 Output window closes automatically while executing Filesteam operation in .exe file but it works fine in flash debug mode

我正在使用 adobe flash cs6 创建桌面应用程序。在该应用程序中,我使用 flash.filesystem.filestream 来保存文本文件 (我不想使用 FileReference 因为我不想显示保存对话框) 当我在导出的 .swf.exe[=34= 中调用新的 FileStream() 时] 文件,应用停止 运行 并关闭 window。 这是我执行此行时的示例代码 var fileStream : FileStream = new FileStream(); window 自动关闭,但此代码在预览模式下工作正常 ( ctrl + Enter) 我正在使用 目标: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 ();
    }

}

}

有什么办法可以解决这个问题吗? 非常感谢!

普拉文

我不知道 text 的内容是什么,但据此 .writeMultiByte (text, File.systemCharset); 我假设你想写非英文字母字符?

最好只使用 .writeUTFBytes,因为它可以处理英语和外国字母。

无论如何...看看这个代码重新修复 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