如何将源目录中的文件作为文件对象

时间:2013-05-01 11:13:41

标签: actionscript-3 flex air flex4

这可能很容易,但我无法弄明白。有一个脚本文件要在我的Flex AIR项目中在src / scripts / myScript.scpt下执行。要执行此文件,我需要创建此文件的文件对象,但经过这么多尝试后,我无法创建文件对象。下面是代码片段。

 var scriptFile:File = new File('src/scripts/myScript.scpt'); 
 var scriptUtility:File = new File('/usr/bin/osascript'); 
  if (scriptUtility.exists) 
   {
   var processInfo:NativeProcessStartupInfo = new NativeProcessStartupInfo();
  processInfo.executable = scriptUtility;
  processInfo.arguments = new Vector.();
  processInfo.arguments.push(scriptFile.nativePath);
  processInfo.arguments.push("your argument here");


   var process:NativeProcess = new NativeProcess();
  process.start(processInfo); 
}

我也尝试过这样的事情: var scriptFile:File = File.applicationDirectory.resolvePath('../ src / scripts / myScript.scpt'); 但在上面的情况下,如果我做的事情 scriptFile.nativePath //只提供调试路径而不是我的实际脚本路径

在每种情况下,我都会看到scriptFile.exists [always false]

提前致谢

1 个答案:

答案 0 :(得分:1)

只有嵌入的文件才会包含在构建中。执行此操作时,src目录在技术上不再存在。

所以,基本上,你这样做:

[Embed(source="src/scripts/myScript.scpt",mimeType="application/octet-stream")]
public static const SCRIPT_FILE:Class;

var scriptBytes:ByteArray = new SCRIPT_FILE() as ByteArray;
var scriptString:String = scriptButes.toString();

允许您嵌入纯文本文件并将其作为ByteArray读取。然后将它翻译成一个你可以随意使用的字符串(或者你可以直接使用ByteArray)

据我所知,

File无法访问在编译时创建的文件。它用于保存文件并在以后访问它们。通常,您可以使用其中一个预设文件位置(例如File.applicationStorageDirectory,这是操作系统允许应用程序存储数据的位置)