c# - 使用 C# 在文本文件中换行
问题描述
我是一个刚开始学习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',因为它正在被另一个进程使用。”
解决方案
您的代码大部分是正确的。你需要改变
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
打开文件的流,使文件句柄保持打开状态。这意味着您File.AppendAllText
无法完成,因为该文件之前是在非共享模式下打开的。
如果您已删除File.AppendAllText
,则不会收到错误消息,但最终会得到一个零字节文件,因为您没有向流中写入任何内容。
由于您根本不使用NewAccount
,删除这些行将允许File.AppendAllText
完成而不会出错,并且...附加您期望的所有文本,这将是名字和姓氏、电子邮件和密码的值。
推荐阅读
- javascript - 在纯 JavaScript 中的 2 个元素之间切换
- java - Java接口实现?
- python - Scrapy:多个蜘蛛到一个 JSON 文件中
- php - 使用内置 PHP SOAP 客户端建立 2 路 SSL 通信的挑战
- c# - 如何在实体框架代码中按分支和年份生成自定义序列号
- android - 未找到 com.google.android.gms.internal.zzbfm 的类文件
- c - 在 C 中学习 OOP
- typescript - 如何使用自定义类型绑定导入相关组件
- javascript - 为什么 getTimeZoneOffset 返回 PST 的正数?
- python - 动态模块没有定义模块导出函数(PyInit_bz2)