|
分類:[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();
}
}
}
|