2016-02-25 72 views
0

我在C#中使用Windows窗體,並試圖在我的程序中用戶可以更新內部文本文件的方法。該文本文件是該程序的一部分,但未在資源中列出。目前我的程序可以將文本文件讀取到文本框中,我只是在努力如何寫入該文件(並且因爲內容暫時存在於文本框中,所以如果文本文件的內容完全被內容覆蓋的文本框)。寫入內部文本文件

下面是我用讀入文本代碼(有可能做這個 - 一個更好的辦法,但目前它的工作原理):

var resourceRegions = "SalesMap.Regions.txt"; 
var assembly = Assembly.GetExecutingAssembly(); 

using (Stream fileStream = assembly.GetManifestResourceStream(resourceRegions)) 
using (StreamReader reader = new StreamReader(fileStream)) 
{ 
    string Regions = ""; 

    while (!reader.EndOfStream) 
    { 
     Regions += reader.ReadLine(); 
     Regions += Environment.NewLine; 
    } 
    Console.WriteLine(Regions); 
    textBoxEdit.Text = Regions; 
} 

這裏是我想要的代碼使用寫入文本框(點擊一個按鈕):

var resourceRegions = "SalesMap.Regions.txt"; 
var assembly = Assembly.GetExecutingAssembly(); 

using (Stream fileStream = assembly.GetManifestResourceStream(resourceRegions)) 
using (StreamWriter writer = new StreamWriter(fileStream)) 
{ 
    try 
    { 
     writer.Write(textBoxEdit.Text.ToString()); 
     writer.Close(); 
     writer.Dispose(); 
    } 
    catch 
    { 
     Console.WriteLine("Problem..."); 
    } 
} 

目前,它無法以new StreamWriter(fileStream))並拋出「ArgumentException的是未處理」。有人看到我失蹤了嗎?有一個更好的方法嗎?

回答

2

編譯資源,程序集內容是隻讀的。

如果您想要提供內容更新的方法,請先將資源寫出到磁盤,然後從該位置加載並保存以供在UI中使用。

0

它可能不知道路徑寫它,但它可能是更容易只是把它寫出來是這樣的:

 System.IO.File.WriteAllText(@"C:\Users\Public\TestFolder\Salesmap.regions.txt", textboxedit.text); 

這是StreamWriter的去做正確的方法,只給你的一些想法:

using (System.IO.StreamWriter file = 
     new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt")) 
    { 
     foreach (string line in lines)//lines is an array of strings 
     { 

       file.WriteLine(line); 

     } 
    }