任何人都可以帮忙吗?我一直收到错误File beeing used by another process
。
到目前为止,这是我的代码:
string username = textBox1.Text;
string password = textBox2.Text;
string SecurityCode = textBox3.Text;
if(!Directory.Exists(path + "\\Login"))
Directory.CreateDirectory(path + "\\Login");
if (!File.Exists(path + "\\Login\\Username.omg" + "\\Login\\Password.omg" + "\\Login\\SecurityCode.omg"))
File.Create(path + "\\Login\\Username.omg");
File.Create(path + "\\Login\\Password.omg");
File.Create(path + "\\Login\\SecurityCode.omg");
File.AppendAllText(path + "\\Login\\Username.omg", username);
File.AppendAllText(path + "\\Login\\Password.omg", password);
File.AppendAllText(path + "\\Login\\SecurityCode.omg", SecurityCode);
MessageBox.Show("User Created: Welcome: " + username);
}
答案 0 :(得分:2)
File.Create返回您在尝试访问刚创建的文件之前需要关闭的流
using(File.Create(path + "\\Login\\Username.omg"))
;
using(File.Create(path + "\\Login\\Password.omg"))
;
using(File.Create(path + "\\Login\\SecurityCode.omg"))
;
围绕File.Create调用的简单using语句可以帮助关闭和处理返回的流
但是,正如上面Mr Hans Passant的评论中所述,通过简单调用File.WriteAllText()
可以更好地满足您的简单方案File.WriteAllText(Path.Combine(path, @"login\username.omg"), username);
如果文件不存在,File.WriteAllText会创建该文件并覆盖其内容(如果存在)。相反,在您的代码中,您将信息一遍又一遍地附加到相同的文件中。 我不确定这是否是你想要的。
顺便说一句,你对File.Exists的调用是错误的。您应该单独测试每个文件
string userNameFile = Path.Combine(path, @"login\username.omg");
if (!File.Exists(userNameFile)
{
using(File.Create(userNameFile))
;
}