如何测试我是否可以写入文件名?

时间:2011-02-21 05:20:24

标签: file-io file-permissions directory-permissions

标题可能看似微不足道,但这并不像听起来那么容易。您不能只检查文件的权限,因为该文件可能不存在,您可能拥有创建它然后写入它的必要权限。但是,只有您对目录具有写权限,并且可能执行权限,并且可能对所有父目录具有权限。或者可能不是。我不确定。

因此,给定一个文件名, all 我需要考虑的情况才能正确测试我是否可以打开并写入具有该文件名的文件?这不是任何一种编程语言所特有的。我只想要逻辑。但是,实际编程语言中的示例是受欢迎的。

2 个答案:

答案 0 :(得分:2)

这样的测试不一定非常有用 - 你只是在努力 对于竞争条件,如果文件在您的支票之间由于某种原因变得不可写 和写入尝试。 (其他一些进程可能会更改权限,移动或删除 父目录,用完设备上的最后一个可用空间等...)

我会继续尝试写,并努力检查错误 在每个步骤(开放,每次写入尝试,结束)可以想象操作 失败。

答案 1 :(得分:0)

  1. 这取决于运行程序的进程的所有者,所有者是否有权写入该目录。例如,以www用户身份运行的apache可能无法写入root拥有的目录,也无法写入其他用户或组的权限。

  2. 您可以执行命中或跟踪方式,例如尝试创建文件以查看它是否成功,以防它无法捕获正确的错误代码并且没有权限或目录已满并采取纠正措施。

  3. 如果目录有空间,文件已经存在等,您可以通过编程方式检查用户是否有权写入目录。通过使用某些apis,系统公开并且语言暴露,这样做更好的方法案件而不是处理失败案件。