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