写入内部文本文件
Writing to internal 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 was unhandled"。有人看到我错过了什么吗?有更好的方法吗?
它可能不知道要写入的路径,但像这样写出来可能更容易:
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);
}
}
编译资源,程序集内容为只读。
如果您想为内容提供一种可更新的方式,请先将资源写入磁盘,然后从该位置加载并保存以供在 UI.
中使用
我在 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 was unhandled"。有人看到我错过了什么吗?有更好的方法吗?
它可能不知道要写入的路径,但像这样写出来可能更容易:
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);
}
}
编译资源,程序集内容为只读。
如果您想为内容提供一种可更新的方式,请先将资源写入磁盘,然后从该位置加载并保存以供在 UI.
中使用