如何在Window窗体的资源文件夹中编辑文本文件c#

时间:2014-01-08 13:56:04

标签: c# .net winforms window

我正在尝试编辑一个包含窗口项目资源文件夹的文本文件。 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();
}

2 个答案:

答案 0 :(得分:3)

正如@LarsTech在this answer中所述,您要做的是不推荐。资源文件不应写入 - 只能读取它们。如果您想要放置文件的位置,请将它们放在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块,则无需删除StreamWriter。如果您使用实现{{1}}接口的成员{{1}},则可以执行此操作。

这应该照顾你的一切。您不必创建任何文件或担心它们的位置。

答案 1 :(得分: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(fileName,true)。