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) { //

我是一个刚开始学习C的学生

我试图使用文本文件创建注册和登录函数,并将用户输入的详细信息保存到文本文件中,但当我再次运行我的函数时,它会重写已有的内容,而不是开始新的一行

这是我的代码中很重要的一部分

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