私の問題は、ディレクトリを読んでいて、ファイルを名前でフィルタリングすることですが、このディレクトリにも別の名前のファイルがあります。私がやろうとしているのは、このファイルを別の名前で入力し、行番号6を読み取ることです。この行が同じ名前の他のファイルの名前と一致する場合は、このファイルをに保存し、後で処理するために配列します。
前もって感謝します。
私の問題は、ディレクトリを読んでいて、ファイルを名前でフィルタリングすることですが、このディレクトリにも別の名前のファイルがあります。私がやろうとしているのは、このファイルを別の名前で入力し、行番号6を読み取ることです。この行が同じ名前の他のファイルの名前と一致する場合は、このファイルをに保存し、後で処理するために配列します。
前もって感謝します。
これを試して:
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なしで記述されていますが、とにかく役立つかもしれません。
これは、特定の行を読み取る最も簡単な方法です。
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);
}