| 分類:[C#]
VisualStudio Community 2017 を使用しています。
以下のデータとソースを作成しました。 予想では、読み込みデータは1行目、5行目、10行目と 出力してほしかったのですが、 1,2,3行目が出力してしまいます。
sample.csvの中身 1,100 2,200 3,300 4,400 5,500 6,600 7,700 8,800 9,900 10,1000
private void button1_Click(object sender, EventArgs e) { /**/ // sampleファイルオープン var fs = new FileStream(@"C:\Users\mau\sample.csv", FileMode.Open, FileAccess.Read); var sr = new StreamReader(fs, Encoding.Default);
// 書き込み用ファイルオープン StreamWriter sw = new StreamWriter(@"C:\Users\mau\sample_new.csv", true, Encoding.GetEncoding("shift_jis")); sw.WriteLine("fpos,no,row");
//現在のfsの位置 long fpos = fs.Position; // 1行目読み込み var buf = sr.ReadLine(); sw.WriteLine(fpos +","+ buf +","+ fs.Position); byte[] st = new byte[20];
// 5行目読み込み fpos = 0; fpos = fpos + (buf.Length + 1) * 5; fs.Seek(fpos, SeekOrigin.Begin); var buf = sr.ReadLine();
buf = sr.ReadLine();0 sw.WriteLine(fpos + "," + buf + "," + fs.Position);
// 10行目読み込み fpos = 0; fpos = fpos + (buf.Length + 1) * 10; fs.Seek(fpos, SeekOrigin.Begin); buf = sr.ReadLine(); sw.WriteLine(fpos + "," + buf + "," + fs.Position); fs.Close(); sr.Close(); sw.Close(); } } }
|