1

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

那么,给定一个文件名,为了正确测试我是否可以使用该文件名打开和写入文件,我需要考虑哪些情况这并不特定于任何一种编程语言。我只想要逻辑。但欢迎使用真实编程语言的示例。

4

2 回答 2

2

这样的测试不一定很有用——如果文件在您的检查和写入尝试之间由于某种原因变得不可写,您只是在为自己设置一个竞争条件。(其他一些进程可能会更改权限、移动或删除父目录、用完设备上的最后一个可用空间等......)

我只是继续尝试写入,并努力检查每个步骤(打开,每次写入尝试,关闭)的错误,其中操作可能会失败。

于 2011-02-21T05:45:55.807 回答
0
  1. 这取决于运行程序的进程的所有者,所有者是否有权写入该目录。例如,以 www 用户身份运行的 apache 可能无法写入 root 拥有的目录,并且没有其他或组的权限。

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

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

于 2011-02-21T05:49:01.863 回答