行に基づいて csv ファイルを読み取ることは可能ですか。行番号を指定すると、その特定の行が CSV で取得されます。
ありがとう
テキストファイル(csvなど)の行を読みたいだけの場合、最も簡単な方法は、File.ReadLines
とを使用することEnumerable.ElementAtOrDefault
です。
public static String getFileLine(String path, int indexOfLine)
{
return File.ReadLines(path).ElementAtOrDefault(indexOfLine);
}
このように使用します。
String line = getFileLine(@"C:\Temp\CsvFile.csv", 99);
これにより、100行目が返されます(またはnull
100行未満の場合)。
行の範囲を返す別の同様のメソッドを次に示します。
public static IEnumerable<String> getFileLines(String path, IEnumerable<int> lineIndices)
{
return File.ReadLines(path).Where((l, i) => lineIndices.Contains(i));
}
最初の10行を返します。
IEnumerable<int> range = Enumerable.Range(0,10);
IEnumerable<String> lines = getFileLines(@"C:\Temp\CsvFile.csv", range);
foreach (String line in lines)
Console.WriteLine(line);
File.ReadLines
に似ていることに注意してください。必要なだけ、StreamReader
ファイル全体を一度にメモリに読み込むことはありません(as )。FileReadAllLines
ファイルがそれほど大きくない場合は、次のように実行できます。
string line10 = File.ReadAllLines(@"<filename>", Encoding.Default).ElementAt(10);
動機がわからない-パフォーマンスの場合は、DBの使用を検討してください... CSVはDBではなく、単なる大きなファイルです...特定の行番号を読み取るには、前のすべての行を読み取る必要があります(ただしそれらを完全に解析する必要はありません)...またはファイル全体をメモリに読み込みますFile.ReadAllLines
-これによりstring[]
、任意の行にアクセスできるようになります...または使用するFile.ReadLines
とIEnumerable<string>
メモリ効率が向上する可能性があります/大きなファイルでパフォーマンスを発揮...
csvファイルの読み書きに使用System.IO.StreamReader
してください。System.IO.StreamWriter
彼らはReadLine()
とWriteLine()
方法を持っています。
ここでの目標によって異なりますが、おそらく次のようなことを行う必要があります
while((line = readFile.ReadLine()) != null)
{
//Record line
}
次に、ファイル データをメモリに読み込んだら、行単位でクエリを実行することを検討できます。
ちなみに、これをグーグルで検索することを検討する必要がありました.Bing'ingでも答えが得られます.