2015-05-14 76 views
-8

非常簡單直接,我想從文件中讀取;將字符串值轉換爲int,迭代使用「」作爲語句「並將該文件寫入另一個文件。寫入時,應將每個數字寫入新行。我想使用File類的WriteAllLines靜態方法。它只接受一個字符串數組,我怎麼做到這一點?我的代碼片段是這樣的:使用C#對文件進行讀取和寫入#

static void Main(string[] args) 
     { 
      String Readfiles = File.ReadAllText(@"C:\Users\ken4ward\Desktop\Tidy\WriteLines.txt"); 
      Int32 myInt = Int32.Parse(Readfiles); 

      for (int i = 0; i < myInt; ++i) 
      { 
       Console.WriteLine(i); 
       Console.ReadLine(); 
       String[] start = new String[i]; 
      File.WriteAllLines(@"C:\Users\ken4ward\Desktop\Tidy\writing.txt", start); 
      } 
     } 

這很簡單。用一堆代碼,迭代的輸出被寫入.txt文件。迭代只計算一次方法被調用的次數。這部分完成完成。如果該方法被調用10次,它只需寫入10.第二個類文件讀取該文件並將其寫入另一個.txt文件。我想要做的是,因爲第一個文件只寫一個數字。作爲一個例子 - 10,什麼是寫在第二個文件應該是這樣的:

1 
2 
3 
4 
5 
6 
7 
8 
9 
10  

這意味着在新行寫入每個數字。問題是它不寫入txt文件。

+1

那麼您可以將每個**數字**添加到'string []',然後將'string []'發送到'File.WriteAllLines'方法。 –

+0

堅持......你懂Parse方法嗎? –

+1

@PawelMaga如果僅僅是關於'Parse'方法... – Luaan

回答

1

問題是你正在循環內聲明你的字符串數組,並且從不用任何東西填充它。相反,將該字符串數組移到循環外部。另外,我不認爲每次都要通過循環寫入文件,所以也要將文件寫入循環之外。

static void Main(string[] args) 
{ 
    String Readfiles = File.ReadAllText(@"C:\Users\ken4ward\Desktop\Tidy\WriteLines.txt"); 
    Int32 myInt = Int32.Parse(Readfiles); 

    //Declare array outside the loop 
    String[] start = new String[myInt]; 

    for (int i = 0; i < myInt; ++i) 
    { 
     //Populate the array with the value (add one so it starts with 1 instead of 0) 
     start[i] = (i + 1).ToString(); 

     Console.WriteLine(i); 
     Console.ReadLine(); 
    } 

    //Write to the file once the array is populated 
    File.WriteAllLines(@"C:\Users\ken4ward\Desktop\Tidy\writing.txt", start); 
} 
+0

Chris Dunaway,單詞不能很好地表達我很欣賞你的貢獻。你解決了這個問題。 – kehinde

0

你可以這樣做:

File 
    .WriteAllLines(@"C:\Users\ken4ward\Desktop\Tidy\writing.txt", 
     File 
      .ReadAllLines(@"C:\Users\ken4ward\Desktop\Tidy\WriteLines.txt") 
      .Select(x => int.Parse(x)) 
      .Select(x => x.ToString()) 
      .ToArray()); 

但僅僅是同一個文件副本,但每行的脆弱int驗證。