Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Matlab'中可能存在的错误;s";fileattrib";功能。解决办法?_File_Matlab_File Attributes - Fatal编程技术网

Matlab'中可能存在的错误;s";fileattrib";功能。解决办法?

Matlab'中可能存在的错误;s";fileattrib";功能。解决办法?,file,matlab,file-attributes,File,Matlab,File Attributes,我在Windows上的Matlab函数中发现了一些奇怪的行为。对于某些文件名,它错误地将文件标识为隐藏的系统文件夹 要测试它,请下载此文件(该文件为空;重要的只是文件名): 将文件放在一个空文件夹中(我使用的是“c:\temp”),然后尝试以下操作: fileattrib('c:\temp\*') 如果你的Matlab和我的一样,它会给你一个错误的结果: ans = Name: 'c:\temp\?aaa.txt' archive: 1

我在Windows上的Matlab函数中发现了一些奇怪的行为。对于某些文件名,它错误地将文件标识为隐藏的系统文件夹

要测试它,请下载此文件(该文件为空;重要的只是文件名):

将文件放在一个空文件夹中(我使用的是“c:\temp”),然后尝试以下操作:

fileattrib('c:\temp\*')
如果你的Matlab和我的一样,它会给你一个错误的结果:

ans = 
            Name: 'c:\temp\?aaa.txt'
         archive: 1
          system: 1
          hidden: 1
       directory: 1
              [...]
现在重命名文件名,删除第一个字符,然后重试。它会正确地说

ans = 
            Name: 'c:\temp\aaa.txt'
         archive: 1
          system: 0
          hidden: 0
       directory: 0
            [...]
我在WindowsVista和Windows7上的MatlabR2010B和R2007a中看到过这种行为

问题显然与某些“冒犯”的字符(或字符集/编码?)有关,但我不知道。有人能找出为什么会这样吗?如何解决这个问题

编辑

这似乎已在R2015a(可能更早)中得到纠正:它正确返回

        Name: 'C:\Users\Luis\Desktop\tmp\�aaa.txt'
     archive: 1
      system: 0
      hidden: 0
   directory: 0
        [...]

解决这个问题的一种方法是不要(仅仅)依赖
fileattrib
命令

为了确定某个内容是文件还是目录,可以在包含文件夹上使用
dir
命令时检查其注册方式

这有点麻烦,但是当在文件夹中使用dir调用时(直接在文件中调用时不起作用),您似乎得到了正确的输出



当然,一个快速而肮脏的替代方案是将您的整个处理置于
try
/
catch
结构中,如果其中一个失败,只需尝试另一个。

这可能是编码问题。在我的系统上,
,显示为
èè½
。值得一提的是,在R2013和OS X 10.4中,“hidden”属性是
NaN
(我认为
fileattrib
在UNIX系统上可能并不麻烦,因为它甚至不能识别前缀为
”的文件。
是隐藏的,或者它在OS X中使用了可见性属性,或者它是另一个bug)。@horchler感谢您提供的补充信息。真奇怪。在Windows上,第一个字符是黑色菱形内的白色问号。如果我将
字符复制并粘贴到文件名中,Matlab(至少在OS X上)显示得很好(隐藏属性仍然是
NaN
)。也许你的文件上传/下载更改了字符。是的,这只发生在我下载的文件上。尽管如此,我可以理解字符显示错误,但是
fileattrib
被愚弄到认为文件是隐藏文件夹…?有趣的是,该答案中指向MAtlab文档的链接说“MAtlab可能无法正确处理大于2字节的字符代码”,感谢您的时间。实际上,我开始使用
dir
,它工作得很好,但比
fileattrib
慢得多(我有成千上万个文件)。
try/catch
方法是个好主意,谢谢。尽管尝试复制“视为文件”文件夹实际上不会引发异常,但我使用的
dos
命令确实会返回一个结果和状态,从中我可以推断是否出现了问题,在这种情况下,请尝试其他选项。