C#音乐播放器

分类: 使用方法 发布时间:2018-10-08 12:28

创建M3U文件和写入M3U文件

       #region  创建m3u文件

        ///

        ///   创建m3u文件

        ///

        /// 目录

        public void m3uCreate(string FileDir)

        {

            FileStream fs;

            Byte[] info;

            if (System.IO.File.Exists(FileDir)) //如果文件存在,则退出操作

            {

                MessageBox.Show("文件已存在,请重新设置文件名。");

                return;

            }

            else //如果文件不存在,则创建File.CreateText对象

            {

                fs = System.IO.File.Create(FileDir);

            }

            info = new UTF8Encoding(true).GetBytes("#EXTM3U");

            fs.Write(info, 0, info.Length);

            fs.Close();

            fs.Dispose();

        }

        #endregion

        #region  写入m3u文件

        ///

        ///   写入m3u文件

        ///

        /// 目录

        public void m3uWrite(string FName, string FTime, string FDir, string FileDir)

        {

            if (!System.IO.File.Exists(FileDir))

            {

                MessageBox.Show("文件不存在。");

                return;

            }

            StreamWriter ASW = new StreamWriter(FileDir, true, Encoding.Default);

            ASW.WriteLine();

            ASW.Write("#EXTINF:" + FTime + "," + FName);

            ASW.WriteLine();

            ASW.Write(FDir, Encoding.Default);

            ASW.Flush();

            ASW.Close();

            ASW.Dispose();

        }

        #endregion

获取歌词

 #region  获取MP3的歌词

        ///

        ///   获取MP3的歌词

        ///

        /// 歌词路径

        public string[] LRC_Lyric(string FileName)

        {

            ArrayList ArrLyric = new ArrayList();

            FileStream fs = new FileStream(@FileName, FileMode.Open, FileAccess.Read, FileShare.None);

            StreamReader sr = new StreamReader(fs, Encoding.Default);

            sr.BaseStream.Seek(0, SeekOrigin.Begin);

            string Tem_strLine = sr.ReadLine();

            string Tem_Str = "";

            string sp = "";

            int Tem_p = 0; //记录当前[的位置

            int Tem_q = 0; //记录当前]的位置

            string Tem_Time = ""; //时间

            string Tem_Slyrec = ""; //歌词

            bool Tem_bool = true; //循环条件

            while (Tem_strLine != null)

            {

                Tem_bool = true;

                Tem_Str = Tem_strLine;

                sp = Tem_strLine;

                if (sp.IndexOf(Convert.ToChar("[")) == -1 || sp.Trim() == "")

                {

                    Tem_strLine = sr.ReadLine();

                    continue;

                }

                sp = sp.Substring(sp.IndexOf(Convert.ToChar("[")) + 1, 1);

                Tem_Slyrec = Tem_Str.Substring(Tem_Str.LastIndexOf(Convert.ToChar("]")) + 1,

                                               Tem_Str.Length - (Tem_Str.LastIndexOf(Convert.ToChar("]")) + 1));

                if (EstimateFig(sp))

                {

                    while (Tem_bool)

                    {

                        Tem_p = Tem_Str.IndexOf(Convert.ToChar("["));

                        Tem_q = Tem_Str.IndexOf(Convert.ToChar("]"));

                        Tem_Time = Tem_Str.Substring(Tem_p + 1, Tem_q - Tem_p - 1);

                        ArrLyric.Add(Tem_Time + "|" + Tem_Slyrec);

                        if (Tem_q != Tem_Str.LastIndexOf(Convert.ToChar("]")))

                            Tem_Str = Tem_Str.Substring(Tem_q + 1, Tem_Str.Length - Tem_q - 1);

                        else

                            Tem_bool = false;

                    }

                }

                Tem_strLine = sr.ReadLine();

            }

            sr.Dispose();

            fs.Dispose();

            int Tem_DatetimeUp; //记录前一个时间

            int Tem_DstetimeDown; //记录后一个时间

            string Tem_taxisTime = ""; //记当截取后的时间字符串

            string Tem_Transitorily = ""; //排序时临时存储的字符串

            string[] ArrayStr = new string[ArrLyric.Count];

            for (int i = 0; i < ArrayStr.Length; i++)

            {

                Tem_Str = ArrLyric[i].ToString();

                Tem_taxisTime = Tem_Str.Substring(0, Tem_Str.LastIndexOf(Convert.ToChar("|")));

                Tem_taxisTime = BuildMillisecond(Tem_taxisTime);

                ArrayStr[i] = Tem_taxisTime + "|" +

                              Tem_Str.Substring(Tem_Str.LastIndexOf(Convert.ToChar("|")) + 1,

                                                Tem_Str.Length - Tem_Str.LastIndexOf(Convert.ToChar("|")) - 1);

            }

            string iStr = "";

            string jStr = "";

            for (int i = 0; i < ArrayStr.Length - 2; i++)

            {

                for (int j = 0; j < ArrayStr.Length - 1 - i; j++)

                {

                    iStr = ArrayStr[j];

                    jStr = ArrayStr[j + 1];

                    Tem_taxisTime = iStr.Substring(0, iStr.LastIndexOf(Convert.ToChar("|")));

                    Tem_DatetimeUp = Convert.ToInt32(Tem_taxisTime);

                    Tem_taxisTime = jStr.Substring(0, jStr.LastIndexOf(Convert.ToChar("|")));