我像这样创建一个FileInfo数组
try
{
DirectoryInfo Dir = new DirectoryInfo(DirPath);
FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories);
foreach (FileInfo FI in FileList)
{
Console.WriteLine(FI.FullName);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
此数组包含folder = DirPath
中的所有文件名我想过循环遍历FileInfo数组并将其复制到String数组中。这样可以,还是有更清洁的方法?
答案 0 :(得分:13)
使用LINQ:
FileList.Select(f => f.FullName).ToArray();
或者,使用Directory
,您可以直接获取文件名。
string[] fileList = Directory.GetFiles(DirPath, "*.*",
SearchOption.AllDirectories);
答案 1 :(得分:2)
如果你想转向其他方式(将字符串数组转换为FileInfo),你可以使用以下内容:
string[] files;
var fileInfos = files.Select(f => new FileInfo(f));
List<FileInfo> infos = fileInfos.ToList<FileInfo>();
答案 2 :(得分:1)
static string BlastWriteFile(FileInfo file)
{
string blasfile = " ";
using (StreamReader sr = file.OpenText())
{
string s = " ";
while ((s = sr.ReadLine()) != null)
{
blasfile = blasfile + s + "\n";
Console.WriteLine();
}
}
return blasfile;
}
答案 3 :(得分:0)
试试这个
DirectoryInfo directory = new DirectoryInfo("your path");
List<string> Files = (directory.GetFiles().Where(file => file.LastWriteTime >= date_value)).Select(f => f.Name).ToList();
如果您不想使用日期过滤器,只需使用以下代码进行转换
即可List<string> logFiles = directory.GetFiles().Select(f => f.Name).ToList();
如果您需要文件的完整路径,则可以使用FullName
代替Name
。