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();
    }

c#如何使存储的文件最多能有100个条目

 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());
}