如何将\ save文件放入应用程序目录? (adobe air)

时间:2010-05-20 08:36:21

标签: actionscript-3 file air mxml filesystems

如何将\ save文件放入应用程序目录? (adobe air)(代码示例,请)

7 个答案:

答案 0 :(得分:15)

这不是建议但是有可能。像这样构建你的文件引用:

var pathToFile:String = File.applicationDirectory.resolvePath('file.txt').nativePath;
var someFile:File = new File(pathToFile);

答案 1 :(得分:9)

您无法写入AIR应用程序的应用程序目录,这是不允许的。但是,您可以写入AIR应用程序在用户目录中创建的文件夹,称为“应用程序存储目录”。如果您需要配置文件等,这可能是放置它们的最佳位置。请参阅以下文档链接中的“applicationDirectory”:

http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/

答案 2 :(得分:2)

接受的答案有效!

但如果我这样做:

var vFile = File.applicationDirectory.resolvePath('file.txt');
var vStream = new FileStream();
vStream.open(vFile, FileMode.WRITE);
vStream.writeUTFBytes("Hello World");
vStream.close();

它将提供SecurityError:fileWriteResource。但是,如果我使用applicationStorageDirectory,上面的代码将起作用。只有当它是applicationDirectory时它才会起作用。此外,Adobe的文档还说AIR应用程序无法写入其applicationDirectory。

现在,我想知道Adobe是否允许使用接受的答案建议的方式写入applicationDirectory。

答案 3 :(得分:2)

@glendon 如果你试图直接保存到applicationDirectory它确实会抛出一个错误,但似乎你可以在文件系统中移动文件。我使用了以下代码:

var sourceFile:File = File.applicationStorageDirectory.resolvePath ("file.txt");
var pathToFile:String = File.applicationDirectory.resolvePath ('file.txt').nativePath;
var destination:File = new File (pathToFile);
sourceFile.moveTo (destination, true);

你不应该使用应用程序文件夹的原因是因为并非所有用户都有权在这样的文件夹中保存文件,而每个人都在applicationStorageDirectory中。

答案 4 :(得分:1)

试试这个。

var objFile:File = new File(“file:///”+File.applicationDirectory.resolvePath(strFilePath).nativePath);

输出就像这样...

file:///c:\del\userConf.xml

这样可以正常工作。

答案 5 :(得分:1)

如果要将文件写入ApplicationDirectory,对吗?

请不要忘记通过powershell使用当前adobe应用程序的注册表项编写nativeprocess(例如:C:\ Program Files(x86)\ AirApp \ AirApp.exe with RunAsAdmin)

  1. nativeprocess保存新的注册表文件
  2. AirApp将重新启动进入RunASAdmin
  3. 使用文件可以写入AirApp:)
  4. 别担心!

    我知道有时应用程序通过注册表文件写入frist并通过将nativeprocess写入注册表文件到调用注册表结构来调用powershell。

    看起来我的adobe系统板/论坛的建议比使用文件写入流的访问问题更好:)

    我希望你,因为你通过powershell + regedit / s \ AirApp.reg了解我的本机流程  并且AirApp更改为管理的AirApp,而不是使用Administratived模式正常工作:) 比你的解决方案应该写,你尝试 - 确保你的写作过程由AirApp。

答案 6 :(得分:0)

此功能为您提供当前的空中应用程序文件夹,以避免出现安全问题:

function SWFName(): String {
        var swfName: String;
        var mySWF = new File(this.loaderInfo.url).nativePath;
        swfName= this.loaderInfo.loaderURL;
        swfName = swfName.slice(swfName.lastIndexOf("/") + 1); // Extract the filename from the url
        swfName = new URLVariables("path=" + swfName).path; // this is a hack to decode URL-encoded values
        mySWF = mySWF.replace(swfName, "");
        return mySWF;
    }