我需要在目录中创建文件和子目录的完整列表。
DirectoryInfo.GetFiles()
找不到所有文件;隐藏文件至少似乎缺失了。
(权限也可能存在问题,因为我无法使用Windows资源管理器查看某些目录,即使我以管理员身份运行。例如,无法输入“C:\ System Volume Information”。 )
我正在使用C#,Windows XP专业版
答案 0 :(得分:7)
DirectoryInfo.GetFiles()
会返回所有文件(不包括您无权查看的文件)。
至少它确实包含隐藏文件,如this person who is asking almost exactly the reverse of this question所示。
您是否有一个特定的文件示例,该文件出现在其他地方但不在此列表中?
答案 1 :(得分:3)
在这个较晚的日期称重,GetFiles并不总是返回所有文件,我也没有弄清楚为什么。这是一种重现方式(至少在64位Windows 7 Home上,以管理员身份运行,并在Visual Studio 2010中使用C#)。
从here安装FTDI驱动程序EXECUTABLE安装程序 (http://www.ftdichip.com/Drivers/D2XX.htm)
这将在\ Windows \ System32中安装以下文件:
-ftbusui.dll
-ftcserco.dll
-ftd2xx.dll
-FTLang.dll
-ftserui2.dll
以下代码:
String[] files = Directory.GetFiles(Environment.SystemDirectory, "f*.*", SearchOption.TopDirectoryOnly);
返回ftd2xx.dll,但不返回其他四个文件。
将searchPattern更改为*。*,或只使用:
GetFiles(Environment.SystemDirectory)
返回ftd2xx.dll,但不返回其他四个文件。
没有隐藏任何文件,并且所有五个文件都具有相同的所有者和权限。所有五个文件都显示在Windows资源管理器和命令提示符窗口中。
实际上,以下内容返回false:
File.Exists(@"c:\Windows\System32\ftbusui.dll")
并且四个文件未显示在OpenFileDialog对话框中。以Admin身份运行可执行文件没有任何区别,关闭UAC也无济于事。
答案 2 :(得分:2)
它应该。尝试在其他目录中搜索,手动创建隐藏文件并查看它是否在搜索结果集中。
答案 3 :(得分:2)
DirectoryInfo.GetFiles()
返回所有文件,包括隐藏文件。
答案 4 :(得分:1)
正如其他人所说,DirectoryInfo.GetFiles()
获取所有文件。因此,看起来您可能会遇到权限问题。