C# 未处理系统IO异常
我正在尝试用C#开发我的第一个应用程序,我只是尝试从一个文件读写。我做了几个小时的研究,有导师试图教我,但这对我来说毫无意义 我已经列出了表单的开头,我认为这是我正在使用的StreamWriter的正确语法,但是文件名似乎在另一个过程中使用,我不知道是哪个过程。以下是我正在使用的代码:C# 未处理系统IO异常,c#,csv,io,streamwriter,C#,Csv,Io,Streamwriter,我正在尝试用C#开发我的第一个应用程序,我只是尝试从一个文件读写。我做了几个小时的研究,有导师试图教我,但这对我来说毫无意义 我已经列出了表单的开头,我认为这是我正在使用的StreamWriter的正确语法,但是文件名似乎在另一个过程中使用,我不知道是哪个过程。以下是我正在使用的代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Syst
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace CustomerApplication
{
public partial class AddCustomerForm : Form
{
public AddCustomerForm()
{
InitializeComponent();
}
private void saveAndExitBtn_Click(object sender, EventArgs e)
{
StreamWriter sw = File.AppendText("test.csv");
sw.WriteLine("Test for Hope");
// next, retrieve hidden form's memory address
Form myParentForm = CustomerAppStart.getParentForm();
// now that we have the address use it to display the parent Form
myParentForm.Show();
// Finally close this form
this.Close();
}// end saveAndExitBtn_Click method
这是Visual Studio不喜欢的行:
StreamWriter sw = File.AppendText("test.csv");
提前感谢您的时间
~TT这里的猜测(基于但文件名似乎在另一个进程中使用)-您打开文件进行写入,但从未关闭它。因此,当您稍后再次尝试写入时,它失败了
请注意,如果在其他应用程序(例如记事本)中打开文件,也可能发生这种情况
您应该将流的创建放在中,以确保在完成对其的操作时关闭它:
using(StreamWriter sw = File.AppendText("test.csv")
{
sw.WriteLine("Test for Hope");
...
}
你确定你没有在其他地方打开文件吗?例如,在进入该代码行之前,您可以尝试手动删除该文件,以查看是否有某个进程保留该文件。我把它打了进去,它成功了。但我建议将Streamwriter包装在using语句中,并使用FileInfo对象。FileInfo对象上有一些很好的属性,就像您可以测试文件是否存在一样。你也可以这样做
FileInfo fi = new FileInfo("C:\\test.csv");
if (fi.Exists)
using (Streamwriter sw = fi.AppendText())
{
sw.WriteLine("tst");
sw.Close();
}
例外情况是什么?是否
test.csv
在可执行文件所在的目录中?+1请发布异常。另外,你所说的文件名似乎在另一个进程中使用,我不知道这是什么意思。
还有什么事情发生了?@JamesEkema-这可能是来自异常消息,表明用户没有正确关闭流。谢谢大家的回答。没有更多的错误,但现在我很好奇如何让用户在表单中的输入写入到文件中,而不仅仅是我的WriteLine代码将信息写入到文件中。然后我需要知道如何以正确的格式读取该文件。这是一个如此简单的任务,但如此复杂,我的大脑感觉它要爆炸了!“我希望我有你所有的经验……”杰克图利-听起来你应该问一个新问题;)