2014-01-08 29 views
1

我試圖編輯窗體項目資源文件夾中的文本文件。 C#。如何編輯資源窗口窗體項目文件夾中的文本文件#

我正在使用此代碼,但它沒有寫入文本文件。沒有錯誤來自這個

using (System.IO.StreamWriter file = new System.IO.StreamWriter(Namespace.Properties.Resources.textfile)) 
{ 
    for (int i = 0; i < res2.Count(); i++) 
    { 
     label3.Text = "Updating ... "; 
     label3.Visible = true; 
     label3.Refresh(); 

     file.WriteLine("asdasD"); 
    } 
    file.Close(); 
} 
+0

你調試了嗎?你有沒有看過'Namespace.Properties.Resources.textfile'這是你想要寫入的文件的正確路徑? – AstralisSomnium

+0

是的,我做了調試。我能夠從相同的路徑讀取文本,但無法寫入。 –

+0

奇怪。你是否可以用其他方式在你的項目中使用這個文件,所以在你想寫入的時候使用它?您是否嘗試使用相同的代碼在此文件中編寫代碼,但在此項目關閉時的其他項目中? – AstralisSomnium

回答

2

正如this answer @LarsTech狀態,你正在試圖做的是不建議。資源文件並不打算寫入 - 它們只能從中讀取。如果你想要一個地方放置文件,把它們放在像Environment.SpecialFolders這樣的地方。

您也可以使用AppData文件夾的用戶的計算機,通常用於你正在努力實現的正是上:

string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "textfile.txt");  
using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName)) 
{ 
    //if the file doesn't exist, create it 
    if (!File.Exists(fileName)) 
     File.Create(fileName); 

    for (int i = 0; i < res2.Count(); i++) 
    { 
     label3.Text = "Updating ... "; 
     label3.Visible = true; 
     label3.Refresh(); 
     file.WriteLine("asdasD"); 
    } 
} 

正如你所看到的,我刪除了file.Close(),因爲它是不如果您正在使用using區塊,則必需。如果您使用的是實現IDisposable界面的成員,則可以執行此操作,其中StreamWriter可以執行此操作。

這應該照顧你的一切。您不必創建任何文件或擔心它們的位置。

+0

你的意思是我應該創建新的文件夾來放置文本數據文件。因此,在用戶的系統中安裝應用程序後,用戶無法讀取該文件。 –

+0

@AmritPal是的,你可以做到這一點。或者你可以使用一些預定義的文件夾,比如'AppData'文件夾(這就是我所要做的)。查看更新的答案。 – gnarlybracket

+0

我和你說的一樣。但用戶仍然可以看到我想要看不到這個文件的文件。 –

1

我能夠在控制檯應用程序中使用您的代碼編寫並讀取文件。你可以運行這個代碼(控制檯應用程序),並告訴我,如果你有任何異常?

static void Main(string[] args) 
    { 

     string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "textfile.txt"); 
     using (System.IO.StreamWriter file = new System.IO.StreamWriter(fileName)) 
     { 
      //if the file doesn't exist, create it 
      if (!File.Exists(fileName)) 
       File.Create(fileName); 

      for (int i = 0; i < 2; i++) 
      { 
       file.WriteLine("asdas2"); 
      } 
     } 

     using(System.IO.StreamReader fr = new StreamReader(fileName)) 
     { 
      Console.WriteLine(fr.ReadToEnd()); 
     } 
    } 

請注意,如果您正試圖將追加到現有的文件(寫在它的結束,並保持現有的內容),你需要使用System.IO.StreamWriter(文件名,真實)。

相關問題