c#如何使存储的文件最多能有100个条目
本文关键字:100个 何使 存储 文件 | 更新日期: 2023-09-27 18:04:52
我正在尝试编写一个小程序,获取用户输入并将其存储在一个文件中,但我希望该文件的元素上限为100:
假设用户添加了100个名字当用户添加下一个名字时它会显示一条消息"List is full"
下面是我到目前为止写的代码: public Form1()
{
InitializeComponent();
}
private string SongName, ArtistName;
public void Registry()
{
List<Name> MusicList = new List<Name>(); //Create a List
MusicList.Add(new Name(SongName = txtSongName.Text, ArtistName = txtArtistName.Text)); //Add new elements to the NameClass
//check if the input is correct
if (txtSongName.TextLength < 1 || txtArtistName.TextLength < 1)
{
Info info = new Info();
info.Show();
}
else //if input is correct data will be stored
{
//Create a file to store data
StreamWriter FileSaving = new StreamWriter("MusicList", true);
for (int i = 0; i < MusicList.Count; i++)
{
string sName = MusicList[i].songName; //Create new variable to hold the name
string aName = MusicList[i].artistName; //Create new variable to hold the name
FileSaving.Write(sName + " by "); //Add SongName to the save file
FileSaving.WriteLine(aName); //Add ArtistName to the save file
}
FileSaving.Close();
}
}
private void btnEnter_Click(object sender, EventArgs e)
{
Registry();
//Set the textbox to empty so the user can enter new data
txtArtistName.Text = "";
txtSongName.Text = "";
}
private void btnClose_Click(object sender, EventArgs e)
{
Application.Exit();
}
private const int MAX_STORED_SONGS = 100;//as class level field
for (int i = 0; i < MusicList.Count && i < MAX_STORED_SONGS; i++)
//...after the loop
if( MusicList.Count > MAX_STORED_SONGS )
errorMessageLabel.Text = "List is full, only 100 items added"
我不确定你的列表选择器看起来像什么,但你可能想要实际上防止他们选择超过100个项目,通过使用一些javascript/验证客户端在页面提交之前。
您的代码不清楚的是,虽然看起来用户提交了一首歌曲,但您创建了一个新的空MusicList,向其中添加了一个项目,但是您循环它,就好像有多个项目一样。也许您应该首先读取文件以确定其中有多少首歌曲,这样您就可以确定它何时为100首歌曲。
您可能希望尝试使用xml给您的数据一些结构。
如果你想保持当前格式,你唯一的选择是计算文件中的新行数,看看这个数加上音乐列表中的任何新项目是否超出了你的限制。
List<string> lines = new List<string>(System.IO.File.ReadAllLines(MyFile));
lines.Add(sName + " by " + aName);
int lineCount = lines.Count;
//limit reached
if(lineCount > 100 )
{
//TODO: overlimit code
} else {
System.IO.File.WriteAllLines(MyFile, lines.ToArray());
}