Apache flex 如何删除应用程序目录中的文件?

Apache flex 如何删除应用程序目录中的文件?,apache-flex,Apache Flex,我们正在将日志文件写入File.applicationDirectory,并希望清除旧的日志文件。问题是如何从该目录中删除文件?当我尝试从该目录中删除旧日志文件时,会出现安全异常。这有什么关系吗 我知道您不应该写入File.applicationDirectory,但我们正在写入那里的日志。所以请不要只是说不要那样做 谢谢 RyanFile.applicationDirectory是一个只读目录 File.applicationDirectory是一个只读目录 发布后不久,我找到了答案。我在Fi

我们正在将日志文件写入File.applicationDirectory,并希望清除旧的日志文件。问题是如何从该目录中删除文件?当我尝试从该目录中删除旧日志文件时,会出现安全异常。这有什么关系吗

我知道您不应该写入File.applicationDirectory,但我们正在写入那里的日志。所以请不要只是说不要那样做

谢谢


Ryan

File.applicationDirectory是一个只读目录


File.applicationDirectory是一个只读目录


发布后不久,我找到了答案。我在FileTarget中查找他们是如何将日志文件写入应用程序目录的,并发现以下gem:

        var logFile:File = this._logDirectory.resolvePath(filename);
        logFile = new File(logFile.nativePath); // Hack to get around SecurityError if log directory exists within the application directory

因此,您只需指定完整的本机路径,而不是应用程序目录中的相对路径,就可以做任何您想做的事情。有趣的安全模型

我在发布后不久就找到了答案。我在FileTarget中查找他们是如何将日志文件写入应用程序目录的,并发现以下gem:

        var logFile:File = this._logDirectory.resolvePath(filename);
        logFile = new File(logFile.nativePath); // Hack to get around SecurityError if log directory exists within the application directory

因此,您只需指定完整的本机路径,而不是应用程序目录中的相对路径,就可以做任何您想做的事情。有趣的安全模型

另一个技巧,用于安全解决方案

var fileLoc:File= File.applicationDirectory.resolvePath("some.log");
var file:File=new File(fileLoc.nativePath);
fileStream.open(file,FileMode.WRITE);

第二个文件对象可以毫无问题地更改文件。

另一个技巧,用于安全解决方案

var fileLoc:File= File.applicationDirectory.resolvePath("some.log");
var file:File=new File(fileLoc.nativePath);
fileStream.open(file,FileMode.WRITE);

第二个文件对象可以毫无问题地更改文件。

有趣的是,文档似乎不一致,因为您可以从该目录中删除。也许是调试和安装之间的区别?有趣的是,文档似乎不一致,因为您可以从该目录中删除。也许这就是调试和安装之间的区别?哇。我喜欢人们通过注释代码来确定他们为什么要做不应该做的事情。AIR不允许您轻松写入该目录的主要原因是因为其中的SWF文件是可信的。因此,在那里编写新的SWF文件可能会打开安全漏洞。这并不是说你不能做到(因为很明显你可以做到),而是这样做会带来问题。这就是为什么尝试写入applicationDirectory时会出现一些基本错误,从而阻碍了这种做法。感谢James提供的额外见解。adobe论坛上有人建议我使用File.applicationStorageDirectory而不是File.applicationDirectory。这是一个更好的地方写临时日志文件。是的!那是最好的地方。应该提到的。:)哇!我喜欢人们通过注释代码来确定他们为什么要做不应该做的事情。AIR不允许您轻松写入该目录的主要原因是因为其中的SWF文件是可信的。因此,在那里编写新的SWF文件可能会打开安全漏洞。这并不是说你不能做到(因为很明显你可以做到),而是这样做会带来问题。这就是为什么尝试写入applicationDirectory时会出现一些基本错误,从而阻碍了这种做法。感谢James提供的额外见解。adobe论坛上有人建议我使用File.applicationStorageDirectory而不是File.applicationDirectory。这是一个更好的地方写临时日志文件。是的!那是最好的地方。应该提到的。:)这可能只适用于旧版本的Windows。如果您的应用程序安装到系统目录,则不能假定运行该应用程序的用户有权修改该目录中的文件。因此,这在Linux、OS X或最新版本的Windows上不太可能起作用。这可能只适用于较旧版本的Windows。如果您的应用程序安装到系统目录,则不能假定运行该应用程序的用户有权修改该目录中的文件。因此,这不太可能在Linux、OS X或最新版本的Windows上工作。