1

行に基づいて csv ファイルを読み取ることは可能ですか。行番号を指定すると、その特定の行が CSV で取得されます。

ありがとう

4

5 に答える 5

2

テキストファイル(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行目が返されます(またはnull100行未満の場合)。

行の範囲を返す別の同様のメソッドを次に示します。

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

于 2012-09-17T13:30:39.937 に答える
0

ファイルがそれほど大きくない場合は、次のように実行できます。

string line10 = File.ReadAllLines(@"<filename>", Encoding.Default).ElementAt(10);
于 2012-09-17T13:30:51.607 に答える
0

動機がわからない-パフォーマンスの場合は、DBの使用を検討してください... CSVはDBではなく、単なる大きなファイルです...特定の行番号を読み取るには、前のすべての行を読み取る必要があります(ただしそれらを完全に解析する必要はありません)...またはファイル全体をメモリに読み込みますFile.ReadAllLines-これによりstring[]、任意の行にアクセスできるようになります...または使用するFile.ReadLinesIEnumerable<string>メモリ効率が向上する可能性があります/大きなファイルでパフォーマンスを発揮...

于 2012-09-17T13:32:07.430 に答える
0

csvファイルの読み書きに使用System.IO.StreamReaderしてください。System.IO.StreamWriter彼らはReadLine()WriteLine()方法を持っています。

于 2012-09-17T13:23:57.273 に答える
0

ここでの目標によって異なりますが、おそらく次のようなことを行う必要があります

   while((line = readFile.ReadLine()) != null)
   {
   //Record line
   }

次に、ファイル データをメモリに読み込んだら、行単位でクエリを実行することを検討できます。

ちなみに、これをグーグルで検索することを検討する必要がありました.Bing'ingでも答えが得られます.

于 2012-09-17T13:26:19.550 に答える