0

这可能很容易做到,但我无法弄清楚。在我的 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 [总是错误]

提前致谢

4

1 回答 1

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操作系统允许应用程序存储数据的位置)来执行此操作

于 2013-05-01T16:12:27.373 回答