如何将文件保存到您的应用程序目录中?(Adobe Air)(请提供示例代码)
如何将文件保存到您的应用程序目录中?(Adobe Air)(请提供示例代码)
虽然不推荐,但确实可能。按照以下方式构建您的文件引用:
var pathToFile:String = File.applicationDirectory.resolvePath('file.txt').nativePath;
var someFile:File = new File(pathToFile);
@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);
被接受的答案有效!
但如果我用这个方法:
var vFile = File.applicationDirectory.resolvePath('file.txt');
var vStream = new FileStream();
vStream.open(vFile, FileMode.WRITE);
vStream.writeUTFBytes("Hello World");
vStream.close();
如果我使用applicationStorageDirectory而不是applicationDirectory,上述代码将会起作用。如果使用applicationDirectory,它将会报SecurityError: fileWriteResource错误。此外,Adobe的文档还指出,AIR应用程序无法写入其applicationDirectory目录。
现在,我想知道是否是Adobe的一个bug,他们允许使用被接受答案建议的方式来写入applicationDirectory。
试试这个。
var objFile:File = new File(“file:///”+File.applicationDirectory.resolvePath(strFilePath).nativePath);
输出将会是这样的...
file:///c:\del\userConf.xml
这将很好地工作。
如果您想将文件写入ApplicationDirectory,对吧?
请不要忘记通过powershell和注册表键为您当前的Adobe应用程序编写nativeprocess(例如:C:\Program Files (x86)\AirApp\AirApp.exe with RunAsAdmin)
别担心!
我知道这个技巧,就像有时应用程序首先通过注册表文件进行编写,并通过将nativeprocess写入注册表文件到注册表结构来调用powershell。
看起来我的建议来自adobe系统板/论坛比使用文件访问问题更好:)
我希望您因为您知道我的nativeprocess技巧通过powershell + regedit /s \AirApp.reg 和AirApp变成administratived AirApp,然后它可以在Administratived模式下正常工作:) 那么您的解决方案应该编写并尝试-确保通过AirApp进行编写过程。
这个函数可以获取当前的AIR应用程序文件夹,从而绕过安全问题:
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;
}