C#实现获取mp3 Tag信息的方法
本文实例讲述了C#实现获取mp3Tag信息的方法。分享给大家供大家参考,具体如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.IO;
namespaceFoxer_Player_1._1
{
publicstructMp3Info
{
publicstringidentify;//TAG,三个字节
publicstringTitle;//歌曲名,30个字节
publicstringArtist;//歌手名,30个字节
publicstringAlbum;//所属唱片,30个字节
publicstringYear;//年,4个字符
publicstringComment;//注释,28个字节
publiccharreserved1;//保留位,一个字节
publiccharreserved2;//保留位,一个字节
publiccharreserved3;//保留位,一个字节
}
///
///Mp3文件信息类
/// 
publicclassMp3FileInfo
{
Mp3Infoinfo;
///
///构造函数,输入文件名即得到信息
/// 
///
publicMp3FileInfo(Stringmp3FilePos)
{
info=getMp3Info(getLast128(mp3FilePos));
}
///
///获取整理后的Mp3文件名,这里以标题和艺术家名定文件名
/// 
///
///去除\0字符
/// 
///
///
///获取MP3文件最后128个字节
/// 
///文件名
///返回字节数组 
publicstaticbyte[]getLast128(stringFileName)
{
FileStreamfs=newFileStream(FileName,FileMode.Open,Fileaccess.Read);
Streamstream=fs;
stream.Seek(-128,SeekOrigin.End);
constintseekPos=128;
intrl=0;
byte[]Info=newbyte[seekPos];
rl=stream.Read(Info,0,seekPos);
fs.Close();
stream.Close();
returnInfo;
}
///
///获取MP3歌曲的相关信息
/// 
///从MP3文件中截取的二进制信息
///返回一个Mp3Info结构 
publicstaticMp3InfogetMp3Info(byte[]Info)
{
Mp3Infomp3Info=newMp3Info();
stringstr=null;
inti;
intposition=0;//循环的起始值
intcurrentIndex=0;//Info的当前索引值
//获取TAG标识
for(i=currentIndex;i
///将字节数组转换成字符串
///
///字节数组
///返回转换后的字符串 
publicstaticstringbyteToString(byte[]b)
{
Encodingenc=Encoding.GetEncoding("GB2312");
stringstr=enc.GetString(b);
str=str.Substring(0,str.IndexOf("#CONTENT#")>=0?str.IndexOf("#CONTENT#"):str.Length);//去掉无用字符
returnstr;
}
}
}
      
更多关于C#相关内容感兴趣的读者可查看本站专题:《C#文件操作常用技巧汇总》、《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》及《C#面向对象程序设计入门教程》
希望本文所述对大家C#程序设计有所帮助。
