2016-11-14 14 views
-2

如何逐行讀取文本文件並保存偶數編號行至even.txt和奇數編號行至odd.txt in c#?如何逐行讀取文本文件並在c#中將偶數行保存爲** even.txt **和奇數行以保存爲odd.txt **?

StreamReader dr=new StreamReader(@"C:\Users\Venkatesh\Desktop\sample.txt"); 
string ln=string.Empty; 
int c = 0; 
while (ln != null) 
{ 
    c += 1; 
    if (c%2 == 0){ 
     StreamWriter even = new StreamWriter(@"C:\even.txt"); 
     even.WriteLine(ln); 
    } 
    else { 
     StreamWriter odd = new StreamWriter(@"C:\odd.txt"); 
     odd.WriteLine(ln); 
    } 
} 
+5

什麼是問題/問題/任何事情? – Hank

+0

我是新來堆棧溢出,現在只是我編輯的職位。並看看這個問題.... PLZ給我一個解決方案 – Venkatesh

+0

歡迎來到堆棧溢出!發佈您之前的代碼。我們將採取您迄今爲止所嘗試的方式,並引導您朝着正確的方向前進。你以前看過的代碼很接近。 – Hank

回答

1

你需要的是這樣的:

string ln = string.Empty; 
int c = 0; 

using (StreamWriter odd = new StreamWriter(@"C:\Users\rdaniel\Desktop\odd.txt")) 
using (StreamWriter even = new StreamWriter(@"C:\Users\rdaniel\Desktop\even.txt")) 
using (StreamReader dr = new StreamReader(@"C:\Users\rdaniel\Desktop\example.txt")) 
{ 
    while (ln != null) 
    { 
     ln = dr.ReadLine(); 
     c += 1; 
     if (c % 2 == 0) 
     { 
      even.WriteLine(ln); 
     } 
     else 
     { 
      odd.WriteLine(ln); 
     } 
    } 
} 
+0

不要忘記在最後包含對Dispose()的調用 - 事實上,如果這些被包含在「using」或「try/catch/finally」塊中,將會更好。 – EJoshuaS

+1

是的,我正在調整那部分。我一旦發現我貼哈哈 – Hank

+1

他們應該有新的StreamWriter實例化(@「C:\ even.txt」,真正的),以便它們附加,而不是覆蓋 – EJoshuaS

3

而是打開/關閉在循環中的輸出文件,你可以做這樣的事情...

using (var odd = File.CreateText("odd.txt")) 
using (var even = File.CreateText("even.txt")) 
{ 
    int count = 0; 
    foreach (var line in File.ReadLines(filename)) 
    { 
     (count++ % 2 == 0 ? even : odd).WriteLine(line); 
    } 
} 
+0

我喜歡這個答案更好lol – Hank

+0

thanq u @EZI,但讓我知道計數++%2 == 0?甚至:奇數).WriteLine(line)工作 – Venkatesh

+0

@Venkatesh這只是@Hank在他的回答中做的一個快捷方式(9行以'c + = 1;'開始)請參閱https://msdn.microsoft.com/ en-us/library/ty67wk28.aspx –

相關問題