我正在尝试使用该Directory.GetFiles()方法来检索多种类型的文件列表,例如mp3's和jpg's.我试过以下两个都没有运气:
Directory.GetFiles("C:\\path", "*.mp3|*.jpg", SearchOption.AllDirectories);
Directory.GetFiles("C:\\path", "*.mp3;*.jpg", SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)
有没有办法在一个电话中执行此操作?
Directory.EnumerateFilesvs 之间有什么区别GetFiles?
显然,一个返回一个数组,另一个返回Enumerable.
还要别的吗?
给定文件夹路径(如C:\Random Folder),如何在其中找到包含特定扩展名的文件,例如txt?我假设我必须*.txt在目录中进行搜索,但我不确定我应该首先开始这个搜索.
如何过滤多个分机?
我试过了:
FileInfo[] Files = dinfo.GetFiles("*.jpg;*.tiff;*.bmp");
FileInfo[] Files = dinfo.GetFiles("*.jpg,*.tiff,*.bmp");
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
List<string> result = new List<string>();
foreach (string file in Directory.EnumerateFiles(path,"*.*",
SearchOption.AllDirectories)
.Where(s => s.EndsWith(".mp3") || s.EndsWith(".wma")))
{
result.Add(file);
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,做我需要的.除了一件小事.我想找到一种更好的方法来过滤多个扩展.我想使用带有过滤器的字符串数组,例如:
string[] extensions = { "*.mp3", "*.wma", "*.mp4", "*.wav" };
Run Code Online (Sandbox Code Playgroud)
使用.NET Framework 4.0/LINQ执行此操作的最有效方法是什么?有什么建议?
我很感激任何帮助成为偶尔的程序员:-)
我需要构建一个Regex(.NET语法)来确定字符串是否以特定值结尾.具体来说,我需要测试一个文件是否具有特定的扩展名(或一组扩展名).
我正在尝试修复的代码使用:
.*\.(png|jpg|gif)$
Run Code Online (Sandbox Code Playgroud)
这在我的场景中失败的比赛非常缓慢(可能是由于回溯.
简单地删除.*(这是因为API仅测试匹配并且不提取任何内容),这使得正则表达式更加高效.
它仍然感觉效率非常低.我错过了一些明显的东西吗?
不幸的是,我没有控制有问题的API所以我需要一个正则表达式才能做到这一点,即使我通常不认为正则表达式是适合这项工作的工具.
我也做了一些测试使用,RegexOptions.RightToLeft并发现我可以从我的测试用例中挤出更多的性能^.*\.(png|jpg|gif)$,但是我找不到RightToLeft在正则表达式字符串中指定选项的方法所以我不认为我可以使用它.
我正在制作一个文件夹列表,其中每个文件夹只需要几个属性,所以我使用下面的类.但是,无论文件夹如何,该FilesInFolder属性总是比文件夹中的实际文件数多5.
有人可以帮我找出问题所在吗?谢谢.
Public Class Single_Action_Folder
Public ReadOnly FullName As String = ""
Public ReadOnly Name As String = ""
Public ReadOnly FilesInFolder As Integer = 0
Public ReadOnly Exists As Boolean = False
'**
' Constructor
'*
Public Sub New(Optional dir As DirectoryInfo = Nothing)
' First check that a directory has been specified
If dir Is Nothing Then Exit Sub
' Populate the class properties
FullName = dir.FullName
Name = dir.Name
FilesInFolder = dir.GetFiles().Count
Exists = dir.Exists …Run Code Online (Sandbox Code Playgroud) 我有以下解决方案删除只有一个扩展名的单个文件类型; 但是我试图找到一种方法来合并多个文件扩展名,例如:.wma, .mp3, .wav
DirectoryInfo di = new DirectoryInfo(@"C:\");
FileInfo[] files = di.GetFiles("*.mpeg")
.Where(p => p.Extension == ".mpeg").ToArray();
foreach (FileInfo file in files)
try
{
file.Attributes = FileAttributes.Normal;
File.Delete(file.FullName);
}
catch { }
Run Code Online (Sandbox Code Playgroud) 假设我有一个像" .vcproj; .csproj;*.sln "这样的字符串,我想在目录中显示这些类型的所有文件...... Windows一直使用打开文件对话框来完成此操作.
我知道Directory.GetFiles但它只允许我运行一个给定的搜索模式,所以我必须分割我的输入,然后循环每个.
在完成所有打开文件对话框后,是否没有内置功能来执行此操作?
.NET 2所以没有LINQ聪明可用!
假设我在 C:\temp\someFolder 中有“a.txt”、“ab.txt”、“c.txt”文件。
我想获取所有 .txt 文件并从结果中过滤“ab.txt”,但只能通过 SearchPattern 执行此操作。
我希望能够做类似的事情
Directory.GetFiles("C:\\temp", "*.txt -ab", System.IO.SearchOption.AllDirectories)
Run Code Online (Sandbox Code Playgroud)
而不是在GetFiles函数外部进行过滤。
有办法吗?