C# 使用C在文本文件中创建新行#
我是一个刚开始学习C的学生 我试图使用文本文件创建注册和登录函数,并将用户输入的详细信息保存到文本文件中,但当我再次运行我的函数时,它会重写已有的内容,而不是开始新的一行 这是我的代码中很重要的一部分C# 使用C在文本文件中创建新行#,c#,text-files,C#,Text Files,我是一个刚开始学习C的学生 我试图使用文本文件创建注册和登录函数,并将用户输入的详细信息保存到文本文件中,但当我再次运行我的函数时,它会重写已有的内容,而不是开始新的一行 这是我的代码中很重要的一部分 using System; using System.IO; namespace SDD_Assessment_2 { class Program { static void Main(string[] args) { //
using System;
using System.IO;
namespace SDD_Assessment_2
{
class Program
{
static void Main(string[] args)
{
//Write();
//GetTime();
var privInfo = SignUp();
var FullName = Profile(privInfo);
Profile(privInfo);
//Test(FullName);
}
const string filename = "Workout.txt";
static string[] SignUp()
{
string[] privinfo = new string[4];
Console.Write("First Name: ");
privinfo[0] = Console.ReadLine();
Console.Write("Last Name: ");
privinfo[1] = Console.ReadLine();
Console.Write("Email: ");
privinfo[2] = Console.ReadLine();
Console.Write("Password: ");
privinfo[3] = Console.ReadLine();
StreamWriter NewAccount = new StreamWriter(filename);
//NewAccount.WriteLine(privinfo[0] + "," + privinfo[1] + "," + privinfo[2] + "," + privinfo[3] + Environment.NewLine);
File.AppendAllText(filename, privinfo[0] + ", " + privinfo[1] + "," + privinfo[2] + "," + privinfo[3] + Environment.NewLine);
NewAccount.Close();
return privinfo;
}
}
}
当我现在运行它时,它会显示“System.IO.IOException:进程无法访问文件‘filename’,因为它正被另一个进程使用。”我尝试了,它可以工作
不使用时不要打开流
文件名包括目录
class Program
{
static void Main(string[] args)
{
SignUp();
}
const string filename = "Workout.txt";
static string[] SignUp()
{
string[] privinfo = new string[4];
privinfo[0] = "First Name:";
privinfo[1] = "Last Name: ";
privinfo[2] = "Email: ";
privinfo[3] = "Password: ";
File.AppendAllText(Path.Combine(Environment.CurrentDirectory, filename), privinfo[0] + ", " + privinfo[1] + "," + privinfo[2] + "," + privinfo[3] + Environment.NewLine);
return privinfo;
}
}
运行2次
文件内容是
First Name:, Last Name: ,Email: ,Password:
First Name:, Last Name: ,Email: ,Password:
你的代码基本上是正确的。你需要改变
StreamWriter NewAccount = new StreamWriter(filename);
//NewAccount.WriteLine(privinfo[0] + "," + privinfo[1] + "," + privinfo[2] + "," + privinfo[3] + Environment.NewLine);
File.AppendAllText(filename, privinfo[0] + ", " + privinfo[1] + "," + privinfo[2] + "," + privinfo[3] + Environment.NewLine);
NewAccount.Close();
公正
File.AppendAllText(filename, privinfo[0] + ", " + privinfo[1] + "," + privinfo[2] + "," + privinfo[3] + Environment.NewLine);
您分配的NewAccount
将打开一个指向文件的流,从而保持文件句柄打开。这意味着您的文件.AppendAllText
无法完成,因为该文件以前是以非共享模式打开的
如果删除了File.AppendAllText
,则不会出现错误,但最终会得到一个零字节的文件,因为没有向流写入任何内容
由于您根本没有使用
NewAccount
,删除这些行将允许File.AppendAllText
无误地完成,并且。。。附加您期望的所有文本,即名字和姓氏、电子邮件和密码的值。为什么创建StreamWriter NewAccount是的,请删除该StreamWriter
,因为当您尝试使用AppendAllText
写入文件时,文件会被打开。这太令人沮丧了,我一直在遵循一个教程,但它不是很适合我想做的,我访问了10个不同的网站,我把两者合并在一起。我花了90分钟试图创建一个新行,我所要做的就是删除一行来创建一行。谢谢你!我想OP需要的是值,而不是标签。所以我只测试File.AppendAllText,不需要Console.ReadLine