读出文本文件并在String []中保存行

时间:2015-02-25 13:49:28

标签: c# media-player media saving-data

所以我正在制作一个媒体播放器,您可以用来收听预定义的广播电台并播放自己的音乐。

我已经可以加载歌曲并在播放列表中播放它们。

我设法将列表中的歌曲保存到文本文件中,这样您每次想要听到它时都不必再选择每首歌曲。

但我无法阅读它。

我有一个字符串[]文件和字符串[]路径。

用于保存文件名及其路径。

保存为:

RandomSongInPlaylist.mp3 || C:\其中\ \过你\ \有保存\它 ASecondSongInPlaylist.mp3 || C:\另一个\地图

现在我想读出它并在||之前保存名称在string []文件中 以及||之后的路径在string []路径中。

发布一些代码:

//将歌曲添加到播放列表时的代码

private void btnAfspeellijst_Click(object sender, EventArgs e) //button for adding songs

    {
        Playlist.Items.Clear();
        Played.Items.Clear(); //this is for shuffle modus, ignore it.
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.Filter = "Music Files (*.mp3, *.wav, *.wmv, *.wma *.mp4, *.wv, *.aac)|*.mp3; *.wav; *.wmv; *.wma; *.mp4; *.wv; *.aac|All Files (*.*)|*.*";
        openFileDialog1.Multiselect = true;
        if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            try
            {
                files = openFileDialog1.SafeFileNames;
                paths = openFileDialog1.FileNames;
                for (int i = 0; i < files.Length; i++)
                {
                    Playlist.Items.Add(files[i]);
                }
                Playlist.SelectedIndex = 0;
            }
            catch
            {
                MessageBox.Show("Voeg een nummer toe"); //add a nummer, for when you dont give numbers
            }
        }            
    }

//将播放列表另存为文本文件时。

private void btnOpslaan_Click(object sender,EventArgs e)//用于将其保存在文本文件中的按钮

    {
        var saveFile = new SaveFileDialog();
        saveFile.Filter = "Text (*.txt)|*.txt";
        if (saveFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            int i = 0;
            using (var sw = new System.IO.StreamWriter(saveFile.FileName, false))
                foreach (var item in files)
                {
                    sw.Write(item.ToString() + "||" + paths[i].ToString()+Environment.NewLine);
                    i++;
                }
            MessageBox.Show("Success");
        }
    }

当你按下打开的播放列表按钮时,有人可以帮助我再次阅读文本文件,读取所选的文本文件并保存||之前的所有内容作为文件中的文件和||之后的所有内容作为路径中的路径?

1 个答案:

答案 0 :(得分:1)

从文件中读取所有行:
MSDN ReadAllLines

然后你可以使用Split()解析数据:

List<string> files = new List<string>;

foreach (string line in lines[]) 
{
   files.Add(line.Split("||")[0]; 
   //... same code for paths
   // split will return file in element 0 and paths in element1
}

旁注:
像这样的代码更容易维护:

private void btnAfspeellijst_Click(object sender, EventArgs e)
{
   mp3Files.OpenList();
}

......以及项目中的某个地方

public class MusicFilesHandler
{
    public static OpenList()
    {
       //... code to open file
    }
}   

分离逻辑和视图通常被认为是编程中的好主意 阅读有关MVC或MVVM的更多信息。