【发布时间】:2011-02-21 18:18:21
【问题描述】:
如何将\save 文件放入您的应用程序目录? (adobe air) (请提供代码示例)
【问题讨论】:
标签: actionscript-3 file air mxml filesystems
如何将\save 文件放入您的应用程序目录? (adobe air) (请提供代码示例)
【问题讨论】:
标签: actionscript-3 file air mxml filesystems
@格伦登
如果您尝试直接保存到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中保存文件。
【讨论】:
此功能提供您当前绕过安全问题的空中应用程序文件夹:
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;
}
【讨论】:
如果你想将文件写入ApplicationDirectory,对吧?
请不要忘记使用当前 adobe 应用程序的注册表项通过 powershell 为 nativeprocess 写入(例如:C:\Program Files (x86)\AirApp\AirApp.exe with RunAsAdmin)
别担心!
我知道有时应用程序首先通过注册表文件写入并通过将 nativeprocess 写入注册表文件到注册表结构来调用 powershell 的技巧。
看起来我从 adobe 系统板/论坛的建议比使用文件写入流的访问问题要好:)
我希望你知道我通过 powershell + regedit /s \AirApp.reg 使用 nativeprocess 的技巧 并且 AirApp 更改为管理 AirApp,而不是在管理模式下正常工作:) 比你的解决方案应该写然后你尝试 - 确保你的写作过程是由 AirApp 完成的。
【讨论】:
试试这个。
var objFile:File = new File(“file:///”+File.applicationDirectory.resolvePath(strFilePath).nativePath);
输出会是这样的……
file:///c:\del\userConf.xml
这会很好用。
【讨论】:
接受的答案有效!
但如果我这样做:
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 是否是一个错误。
【讨论】:
不推荐,但有可能。像这样构建您的文件引用:
var pathToFile:String = File.applicationDirectory.resolvePath('file.txt').nativePath;
var someFile:File = new File(pathToFile);
【讨论】:
您不能写入 AIR 应用程序的应用程序目录,这是不允许的。但是,您可以写入 AIR 应用程序在用户目录中创建的文件夹,称为应用程序存储目录。如果您需要配置文件等,那可能是放置它们的最佳位置。请参阅以下文档链接中的“applicationDirectory”:
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/
【讨论】: