这可能很容易,但我无法弄明白。有一个脚本文件要在我的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]
提前致谢
答案 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
,这是操作系统允许应用程序存储数据的位置)