【问题标题】:Is there a way to read local files in ActionScript 3 "silently"'?有没有办法“静默”地读取 ActionScript 3 中的本地文件?
【发布时间】:2011-09-16 22:08:14
【问题描述】:
我正在开发一个应用程序,由于某些设计限制,我必须在 Flash 中进行。这个应用程序与另一个用 c++ 完成的应用程序进行通信,但只是因为我需要几个字符串,所以我认为将它们写入 .txt 文件并解析它会很容易。但到目前为止我发现的唯一方法是添加浏览事件处理程序并手动选择文件。这对我没有好处,我需要在给定路径的情况下自动读取文件,例如:
var data:ByteArray = fileRef['C:\whateverPath'];
var loader:Loader = new Loader();
loader.loadBytes(data);
这还能做到吗?
【问题讨论】:
标签:
flash
actionscript-3
actionscript
filesystems
【解决方案1】:
假设由于它在您使用 AIR 的桌面上运行。如果是这样,您可以像这样使用标准 AIR 文件 API(假设文件位于用户目录中):
var file:File = File.userDirectory.resolvePath("myfilename.txt");
var fileStream:FileStream = new FileStream();
fileStream.open(file, FileMode.READ);
var str:String = fileStream.readUTFBytes(file.size);
fileStream.close();
上面还假设文本文件是 UTF-8 编码的。如果没有,FileStream 类中还有其他读取方法。
当然,AIR 也可以访问其他目录。例如,要在 windows 上的 C: 驱动器的根目录中获取文件:
var file:File = new File("C:/mytextfile.txt");
【解决方案2】:
如果您不使用 AIR,则可以使用“local-with-filesystem”权限编译 SWF。然后,您可以使用 URLLoader 加载本地文件。 (您还可以将 SWF 指定为受信任的,然后您可以访问文件系统和网络。)