我的问题是,我正在阅读一个目录,然后我按名称过滤文件,但也在这个目录中有其他文件具有不同的名称,我是什么试图做的是用不同的名字输入这个文件,并且读取第6行,如果这行与其他具有相同名称的文件的名称匹配,则将这些文件保存到数组中并稍后处理。从目录读取文件,然后读取同一文件的特定行c#
在此先感谢。
我的问题是,我正在阅读一个目录,然后我按名称过滤文件,但也在这个目录中有其他文件具有不同的名称,我是什么试图做的是用不同的名字输入这个文件,并且读取第6行,如果这行与其他具有相同名称的文件的名称匹配,则将这些文件保存到数组中并稍后处理。从目录读取文件,然后读取同一文件的特定行c#
在此先感谢。
试试这个:
String dir = @"C:\Temp";
String pattern = "*.txt";
var foundFiles = new List<String>();
foreach (String filePath in Directory.EnumerateFiles(dir, pattern))
{
foreach (String filePath2 in Directory.EnumerateFiles(dir, pattern))
{
if (filePath != filePath2 &&
File.ReadLines(filePath2).ElementAtOrDefault(5) == Path.GetFileName(filePath))
foundFiles.Add(filePath);
}
}
注:没有经过测试的,没有IDE编写的,但也许是有用的反正。
嗨,我是新的编程与C#你能解释你在做什么,谢谢你的帮助.. – Carl
你好,你应该看看'System.IO'命名空间中的类。我使用例如['Directory.EnumerateFiles'](http://msdn.microsoft.com/en-us/library/dd413233.aspx)来获取目录中的文件列表。如果没有太多的行,则Enumerable.ElementAtOrDefault返回(在这里)第6行和'null'。结果是'List
确定Tim,实际上我将这些文件存储到列表框中,我会试试这个,谢谢你的帮助。 – Carl
这应该是读取指定行的最简单方法。
string dir = "C:\\\\someFile.txt";
int LineNo = 1; //Pick a line
string ChosenLine = File.ReadAllLines(dir)[lineNo];
如果您想为文件夹中的每个文件执行此操作,请使用for或foreach。
void someMethod()
{
string folderToScan = "C:\\\\someFolder\\";
foreach(string dir in Directory.GetDirectories(folderToScan).ToList())
{
if(isExtention(dir,".txt"))
{
int LineNo = 1; //Pick a line
string ChosenLine = File.ReadAllLines(dir)[lineNo];
}
}
}
bool isExtention(string f, string extention)
{
return f != null && f.EndsWith(extention, StringComparison.Ordinal);
}
投票下来。这不是一个编程问题,而是一个为你写程序的请求。 @Tim很乐意回答。 –