我正在研究这个项目,我遇到了一个问题。那么这就是我需要做的事情。
当用户单击“保存”按钮时,将所选记录写入 没有在txtFilePath中指定的文件(绝对路径不相对) 截断当前内部的值并处理出现的任何异常。
好的,这是我的代码:
private void Save_Click(object sender, EventArgs e)
{
string filePath = txtFilePath.Text;
if (!File.Exists(filePath))
{
FileStream fs = File.Create(filePath);
fs.Close();
}
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
foreach (string line in employeeList.Items)
{
sw.WriteLine(line);
}
}
}
}
现在,当我进入我的程序并希望保存来自employeeselist.text的东西时,它没有被保存到我保存的地方。我不知道我的代码中是否遗漏了什么,或者它不会保存。这是一个例子:
我在employeeelist和文本框I中为此列表添加了一个人名 有一个名为C:\ employess \ employeelist.txt的文件我想将其保存到。 我点击保存按钮,然后我去找那个员工,但事实并非如此 被救了。
我不知道我做错了什么我一直在寻找解决方案,但我还没有找到任何东西。感谢
答案 0 :(得分:3)
要仔细检查的一些事情:
Save_Click
事件是否已连接到您的按钮 - 示例中的代码是否正在运行?检查完这些内容后,您可能需要按照此示例来了解项目的创建与附加要求:
string path = txtFilePath.Text;
// This text is added only once to the file.
if (!File.Exists(path))
{
using (StreamWriter sw = File.CreateText(path))
{
foreach (var line in employeeList.Items)
sw.WriteLine(line.ToString());
}
}
else
{
using (StreamWriter sw = File.AppendText(path))
{
foreach (var line in employeeList.Items)
sw.WriteLine(line.ToString());
}
}
如果文件不存在,则会创建该文件,如果存在则会附加到该文件。
答案 1 :(得分:1)
检查文件是否存在然后创建它有点不必要,因为这可以由StreamWriter / FileStream部分处理。因此,您的上述功能可以简化为以下内容:
public void Save_Click(object sender, EventArgs e)
{
StreamWriter file =
new StreamWriter(txtFilePath.Text, true);//Open and append
foreach (object item in employeeList.Items) {
file.WriteLine(item.toString());
}
file.Close();
}
[更新]
txtFilePath
和employeeList
有哪些类型,前者表明它是一个文本框,后者表明它可能绑定到非GUI元素? (WAG)
您可能还想在末尾添加一个空行,以便在进一步保存时您可以告诉它是一个附加而不是一个长列表(根据您的需要而定)
答案 2 :(得分:0)
从.Net Framework 4开始,您可以这样做:
private void Save_Click(object sender, EventArgs e)
{
File.AppendAllLines(txtFilePath.Text, employeeList.Items);
}
当然,您可能希望添加一个检查以获得有效路径和有效的字符串枚举。
答案 3 :(得分:-1)
如果路径看起来像是一个相对路径(即不以驱动器号开头),那么它将被解释为这样。