有没有办法简化这个linqexpression式,还是有更好的方法呢? Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || s.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) || s.EndsWith(".png", StringComparison.OrdinalIgnoreCase) || …); 基本上我想返回一个特定扩展名的所有文件。 不幸的是,这种方法不是很灵活。 我宁愿能够向列表添加扩展,并让Directory.GetFiles返回这些扩展。 那可能吗?
可能重复: 如何获得只使用c#的目录中的文件名? 使用C#,我想获取文件夹中的文件列表。 我的目标: ["file1.txt", "file2.txt"] 所以我写了这个: string[] files = Directory.GetFiles(dir); 不幸的是,我得到这个输出: ["C:\\dir\\file1.txt", "C:\\dir\\file2.txt"] 之后我可以去掉不需要的“C:\ dir”部分,但是有没有更优雅的解决scheme?
我有目录,其中包含* .wav格式近14,000,000audio采样。 所有普通的存储,没有子目录。 我想遍历文件,但是当我在该文件夹上使用DirectoryInfo.GetFiles()时,整个应用程序冻结了几分钟! 这可以做另一种方式吗? 也许读1000,处理它们,然后再拿1000等?
可能重复: 你可以调用Directory.GetFiles()与多个filter? 如何过滤多个分机? 我试过了: FileInfo[] Files = dinfo.GetFiles("*.jpg;*.tiff;*.bmp"); FileInfo[] Files = dinfo.GetFiles("*.jpg,*.tiff,*.bmp");
Directory.GetFiles方法在第一次遇到一个没有访问权限的文件夹时失败。 该方法抛出一个UnauthorizedAccessException(可以被捕获),但到这个时候,该方法已经失败/终止。 我使用的代码如下所示: try { // looks in stated directory and returns the path of all files found getFiles = Directory.GetFiles( @directoryToSearch, filetype, SearchOption.AllDirectories); } catch (UnauthorizedAccessException) { } 据我所知,没有办法事先检查某个文件夹是否有访问权限定义。 在我的示例中,我通过networking在磁盘上search,当我遇到仅限根访问权限的文件夹时,我的程序失败。
我试图显示在选定的目录(和任选的子目录)中find的所有文件的列表。 我遇到的问题是,当GetFiles()方法遇到无法访问的文件夹时,它会引发exception,并停止进程。 我如何忽略这个exception(并忽略受保护的文件夹/文件)并继续添加可访问的文件到列表中? try { if (cbSubFolders.Checked == false) { string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath); foreach (string fileName in files) ProcessFile(fileName); } else { string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*", SearchOption.AllDirectories); foreach (string fileName in files) ProcessFile(fileName); } lblNumberOfFilesDisplay.Enabled = true; } catch (UnauthorizedAccessException) { } finally {}