如何检查是否可以将文件写入目录?

问题描述:

尝试寻找可能有用但功能不佳的功能。我最好的解决方法是尝试使用fopen在目录中创建一个虚拟文件,如果它返回-1,那么我知道我不能创建一个文件,并且不执行我的其他代码。如果我成功创建了该文件,那么我将删除它并继续使用其余的代码。如何检查是否可以将文件写入目录?

这似乎是一个相当不雅的方法,我宁愿只是有一行代码告诉我我没有在给定目录中的写入权限。有没有办法做到这一点?

您可以创建一个文件夹:

mkdir('folderName') 

,然后用movefile将文件复制到该文件夹​​:

[status,message,messageid] = movefile('myfunction.m','oldfunction.m'); 

状态是成功的逻辑1或错误逻辑0。

您还可以得到任何权限的文件夹/文件是这样的:

fileattrib('C:\my_MATLAB_files\doc') 
ans = 

      Name: 'C:\my_MATLAB_files\doc' 
     archive: 0 
      system: 0 
      hidden: 0 
     directory: 1 
     UserRead: 1 
     UserWrite: 1 
    UserExecute: 1 
     GroupRead: NaN 
     GroupWrite: NaN 
    GroupExecute: NaN 
     OtherRead: NaN 
     OtherWrite: NaN 
    OtherExecute: NaN 

所以,你可以做这样的事情:

[S,M] = fileattrib('Directory'); 
M.UserWrite 

ans = 
    1