Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File io 如何测试是否可以写入文件名?_File Io_File Permissions_Directory Permissions - Fatal编程技术网

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

File io 如何测试是否可以写入文件名?,file-io,file-permissions,directory-permissions,File Io,File Permissions,Directory Permissions,标题可能看起来微不足道,但这并不像听起来那么容易。您不能只检查文件的权限,因为该文件可能不存在,并且您可能具有创建该文件然后写入该文件所需的权限。但前提是您对该目录具有写入权限,可能具有执行权限,也可能具有对所有父目录的权限。也许不是。我不确定 那么,给定一个文件名,为了正确测试是否可以使用该文件名打开和写入文件,我需要说明哪些情况?这不是特定于任何一种编程语言的。我只想知道逻辑。但真正的编程语言中的示例是受欢迎的。这样的测试不一定非常有用——您只是在设置自己 对于竞争条件,如果文件在检查之间由

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


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

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

我会继续尝试写,并认真检查错误 在每一步(打开、每次写入尝试、关闭),可以想象操作可能会 失败

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

  • 您可以通过点击或跟踪的方式进行操作,比如尝试创建文件以查看是否成功,以防它无法捕获正确的错误代码,或者权限或目录未满,并采取纠正措施

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


  • 如果文件成功退出,您知道您可以写入特定的文件名,为什么不尝试触摸该文件呢。如果它以错误代码退出,您知道您不能。这似乎是最简单的方法。如果不需要,您可以直接删除该文件。如果该文件不存在,触摸不会返回任何错误,它会创建一个零大小的新文件,您无法通过这种方式确定!