写入内部文本文件

时间:2016-02-25 05:32:07

标签: c# winforms textbox text-files

我在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 个答案:

答案 0 :(得分:2)

编译资源,程序集内容是只读的。

如果要为内容提供可更新的方法,请先将资源写入磁盘,然后从该位置加载并保存,以便在UI中使用。

答案 1 :(得分: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);

        }
    }