我正在編寫一個程序,它將一個CSV文件分成四個幾乎相等的部分。文件拆分中缺少的行
我使用的是2000行的CSV輸入文件作爲示例,並且在查看輸出文件時,第一個文件中缺少行,並且還有不完整的行,這是沒有意義的,因爲我正在寫逐行。這裏代碼:
using System.IO;
using System;
class MainClass {
public static void Main(string[] args){
string line;
int linesNumber = 0, linesEach = 0, cont = 0;
StreamReader r = new StreamReader("in.csv");
StreamWriter w1 = new StreamWriter("out-1.csv");
StreamWriter w2 = new StreamWriter("out-2.csv");
StreamWriter w3 = new StreamWriter("out-3.csv");
StreamWriter w4 = new StreamWriter("out-4.csv");
while((line = r.ReadLine()) != null)
++linesNumber;
linesEach = linesNumber/4;
r.DiscardBufferedData();
r.BaseStream.Seek(0, SeekOrigin.Begin);
r.BaseStream.Position = 0;
while((line = r.ReadLine()) != null){
++cont;
if(cont == 1){
//fisrt line must be skipped
continue;
}
if(cont < linesEach){
Console.WriteLine(line);
w1.WriteLine(line);
}
else if(cont < (linesEach*2)){
w2.WriteLine(line);
}
else if(cont < (linesEach*3)){
w3.WriteLine(line);
}
else{
w4.WriteLine(line);
}
}
}
}
爲什麼寫作部分做錯了?我該如何解決它?
謝謝大家的幫助。
那麼,你有沒有在調試器中的每一行代碼? – OldProgrammer
我們使用的示例數據? – BenVlodgi
第一個文件中缺少的是什麼意思?這是最後一行,因爲你正在計數'<'而不是'<=',你的意思是不完整的行嗎?我建議你在'使用'語句中包裝這個,並使用正確的編碼作爲這個原因問題。 – Jegan