2016-11-15 127 views
0

我沒有問題,閱讀fruits.txt文件與streamreader但寫入newFruits.txt似乎無法正常工作。爲什麼我的StreamWriter沒有保存到文本文件?

我運行的代碼,沒有任何錯誤,然後檢查newFruits.txt文件,看它仍是空白。如果有幫助,我有以下newFruits.txt屏幕截圖的屬性窗口。我檢查了其他問題,他們似乎並不相似或可以理解。有什麼建議麼?

using System; 
using System.IO; 
using System.Globalization; 
using System.Threading; 

class FruityLoops 
{ 
    static void Main() 
    { 
     Console.WriteLine("Loading and sorting fruits..."); 
     CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; 
     TextInfo textInfo = cultureInfo.TextInfo; 


     StreamReader fruitreader = new StreamReader("fruits.txt"); 
     string fruitList = fruitreader.ReadLine(); 
     char x = ','; 
     string[] fruitArray1 = fruitList.Split(x); 
     Array.Sort(fruitArray1); 
     fruitreader.Close(); 

     StreamWriter fruitwriter = new StreamWriter("newFruits.txt"); 
     fruitwriter.WriteLine(fruitArray1); 
     fruitwriter.Close(); 

    } 
} 

這是我的屬性菜單的picture我正在嘗試寫的文本文件。看到任何問題?不知道這是一個設置問題還是代碼問題。

這裏是我的fruits.txt文件的picture了。

回答

3

你應該同時傳遞一個串線使用「的WriteLine」方法時:

 for (int i = 0; i < fruitArray1.Length -1 ; i++) 
     { 
      fruitwriter.WriteLine(fruitArray1[i]) 
     } 
+0

這工作。謝謝! –

1

代碼工作,但它節省了newFruits.txt文件到BIN \ Debug或Bin \ Release目錄的程序運行在那裏,不是轉換爲newFruits.txt文件,它是您項目的一部分。

主要意見:

  1. 該代碼會寫System.String[]到輸出文件
  2. StreamWriter S的關係被包裹在using語句。
0

您正在將Array傳遞給WriteLine方法,實際上您應該將字符串傳遞給它。

StreamWriter.WriteLine

要寫入文件異步。你應該使用下面的asyncawait

static async void WriteTextAsync(string text) 
{ 
    // Set a variable to the My Documents path. 
    string mydocpath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 

    // Write the text asynchronously to a new file named "WriteTextAsync.txt". 
    using (StreamWriter outputFile = new StreamWriter(mydocpath + @"\WriteTextAsync.txt")) { 
     await outputFile.WriteAsync(text); 
    } 
} 

使用下面的代碼,通過直接傳遞string[],而不是通過使用StreamWriter寫。

string[] lines = { "line 1", "line 2" }; 
File.WriteAllText("newFruits.txt", ""); 
File.AppendAllLines("newFruits.txt", lines); 

你也可以這樣做。

string path = @"c:\temp\MyTest.txt"; 

    // This text is added only once to the file. 
    if (!File.Exists(path)) 
    { 
     // Create a file to write to. 
     string[] createText = { "Hello", "And", "Welcome" }; 
     File.WriteAllLines(path, createText, Encoding.UTF8); 
    } 

Reference

+0

有什麼*「要異步寫入文件*以解決此問題? – Jim

0
  1. 你沒有提到數組的元素。

你應該給你想要檢索的元素的索引。

fruitwriter.WriteLine(fruitArray1[0]); 

代替

fruitwriter.WriteLine(fruitArray1); 
  • 即使它寫入時,程序將只讀取和寫入一行。

    使用循環讀取和寫入行,並在讀取所有行後關閉StreamReader和StreamWriter。

  • 相關問題