计算机科学与技术MP3音乐文件管理器的设计与实现.doc

上传人:laozhun 文档编号:2395952 上传时间:2023-02-17 格式:DOC 页数:36 大小:767.50KB
返回 下载 相关 举报
计算机科学与技术MP3音乐文件管理器的设计与实现.doc_第1页
第1页 / 共36页
计算机科学与技术MP3音乐文件管理器的设计与实现.doc_第2页
第2页 / 共36页
计算机科学与技术MP3音乐文件管理器的设计与实现.doc_第3页
第3页 / 共36页
计算机科学与技术MP3音乐文件管理器的设计与实现.doc_第4页
第4页 / 共36页
计算机科学与技术MP3音乐文件管理器的设计与实现.doc_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《计算机科学与技术MP3音乐文件管理器的设计与实现.doc》由会员分享,可在线阅读,更多相关《计算机科学与技术MP3音乐文件管理器的设计与实现.doc(36页珍藏版)》请在三一办公上搜索。

1、(2011届)本科毕业设计(论文)MP3音乐文件管理器的设计与实现学 院、系: 计算机与通信学院 专 业: 计算机科学与技术 学 生 姓 名: 班 级: 学号 指导教师姓名: 职称 最终评定成绩 2011 年 6 月工业大学本科生毕业设计(论文)MP3音乐文件管理器的设计与实现院 (系):专 业:学 号:学生姓名:指导教师: 2011 年 6 月摘要随着计算机和多媒体技术的不断发展以及个人计算机的普及,各种各样的媒体文件、媒体播放器层出不穷,而MP3(MPEG Audio Layer3)格式以其体积小、音质也有保证的特点成为使用最为广泛的音频格式,得到了绝大多数软件和硬件媒体播放器的支持。如今

2、,软件市场上的媒体播放器层出不穷,如:Winamp、Foobar 2000和千千静听等。但是,当播放器中有大量的文件和内容时,不能够很好的管理这些文件,这就需要我们设计一个用来管理这些文件的管理器,来对这些文件进行分类列表等。为了方便用户管理磁盘上大量的音乐文件,我们本题研究制作了一个音乐文件管理器,用来管理音乐文件,包括对文件进行分类,添加列表,并对列表进行管理,对歌曲信息进行修改等等。本课题探索性地设计实现了一个MP3音乐文件管理器,要求实现以下功能:通过搜索磁盘上的MP3音乐文件,维护一个自定义的播放列表;播放列表中有关MP3文件的信息,如歌名、艺术家、流派、歌词、封面、专辑等信息,通过

3、查找MP3文件的3种标签信息来自动填写;也可以编辑播放列表,然后把这些信息添加或更新到MP3文件的标签中;提供把自定义播放列表转换为常用播放器使用的播放列表格式,如m3u,pls,asx等。论文首先介绍了系统研究背景、研究目标及意义,以及什么是音乐文件管理器和对MP3标签的认识,然后,论文介绍了系统的需求分析,阐述了系统各功能的详细设计与实现,并对一些重要功能进行了详细的代码说明,最后,论文介绍了系统的运行环境与运行效果,并对各个部分进行了图示说明。另外,论文还做了一些其他补充,使论文更加完整。关键词:文件管理器;JAVA;添加列表;文件分类ABSTRACT Along with the de

4、velopment and popularzation of computers and multimedia technology,various media types and media players emerge continually.The MP3(MPEG Audio Layer3)type is one of the most broadly used audio types.Because MP3 has small volume and high tone quality,it has been supported by most software and hardwar

5、e media players.Nowdays,the media players on the market of software emerge one after another incessantly,such as Winamp,Foorbar 2000,TTPlayer,and etc.The higher tone quality and the lower memory consumption are the goals that each kind of media player pursues. A piece of software which is called MP3

6、 player with timely-displaying lyric is designed and realized in this thesis.This software is developed by using the existing decoder of media files and JAVA language.The player can display lyric with real-time while playing MP3,and it supports some other types of common media files. Firstly,this th

7、esis introduces MP3 and MP3 file manager,research contents and chapter.Secondly,the design goal of the system is analyzed,and the functin modules of the system are divided and designs,including playing control,playlist management,lyric display,menu management and help,also the process flows of media

8、 and lyric files are designed.Thirdly,the development platforms are introduced,and the detailed design and realization of various functions of the system are described.At last,the running results of the system are explained by the copied running screens.Keywords:file manager;java;add to list;text ca

9、tegorization 目 录第一章 绪论11.1 研究背景、目的及意义11.2 音乐文件管理器21.3开发平台及环境21.3.1 JAVA简介21.3.2 MyEclipse6.0集成开发环境31.4 ID3是什么3第二章 系统需求分析52.1系统目标52.2系统功能需求分析52.2.1需求分析的任务62.2.2 可行性分析任务62.2.3 MP3音乐文件管理器的需求分析72.2.4 假定和约束72.2.5 文件管理程序的数据流图7第三章 系统分析与设计93.1 系统功能模块设计93.1.1 音乐文件管理系统功能模块图93.1.2 系统功能模型图103.2 系统的几个重要UML图11第四章

10、 详细设计与实现144.1 算法分析144.2 获取标签的详细代码154.3 标签的修改和删除164.4 程序运行结果图23结论28致谢29参考文献30附录31第一章 绪论1.1 研究背景、目的及意义随着互联网经济的到来,娱乐成为一种每个人都喜欢的活动。它为我们和用户提供休闲的平台,让人们足不出户就可以了解到各种各样的音乐;而对于用户来说,音乐文件管理器则为他们提供了方便快捷省时的服务,强大的搜索功能让他们随心所欲的找到自己喜欢的音乐信息,轻轻的点击鼠标就可以找出自己想要的,还可以对音乐的歌词、演唱家等信息进行修改和编辑,在娱乐的同时能够放松心情,休息。软件产品的出现主要是缓解人们压力,将人从

11、复杂的脑力劳动和繁杂的体力劳动中解脱出来,并且可以实现娱乐的快捷,方便以及高效搜索和更改。本课题探索性地设计实现了一个MP3音乐文件管理器,要求实现以下功能:通过搜索磁盘上的MP3音乐文件,维护一个自定义的播放列表;播放列表中有关MP3文件的信息,如歌名、艺术家、流派、歌词、封面、专辑等信息,通过查找MP3文件的3种标签信息来自动填写;也可以编辑播放列表,然后把这些信息添加或更新到MP3文件的标签中;提供把自定义播放列表转换为常用播放器使用的播放列表格式,如m3u,pls,asx等。本系统实现的管理器功能齐全,它能方便管理磁盘上大量MP3文件,提供搜索,分类列表等功能。它能够直接添加文件,从磁

12、盘上添加多个文件,还可以添加多个目录,并且,能方便的查找你想要的歌曲,并直接试听。如果不想要更新列表,还可将列表清空重新添加。当你选择添加文件时,管理器会直接弹出磁盘上的所有文件供你选择,你可以选择一个或多个文件添加进管理器,方便对文件的管理。当你选中一首歌曲,就会出现试听歌曲、查找歌曲、修改歌曲信息等标签,也可以删除选定的歌曲。还可以查看歌曲的参数设置。音乐查找模块包括按照不同的查找方式来遍历乐库,查找歌曲。播放列表管理模块包括在播放列表中添加歌曲,移除歌曲,增加本地文件夹,移除本地文件夹,新建播放列表,清空播放列表,删除播放列表等。本软件的界面简单漂亮,易于操作,即使用户没有很多计算机操作

13、知识,也可以很快就能进行操作。它还有很多优点,用户在实际操作中将会感受的到,当然它还有一点点的小问题没有做的很完美,不过不会有太多影响。1.2 音乐文件管理器随着社会的发展,人们对精神生活的需求越来越高,音乐作为娱乐中的很重要的一部分,给人们的生活带来了很大的影响。当磁盘上的音乐文件越来越多时,就给人们带来了很大的困扰,人们没办法很快的找到自己想听的歌曲,MP3音乐文件管理器就是一个用来管理用户磁盘上大量音乐文件的,它能将任何的类型的一部专辑或合集保存成为一个单独的文本文件,在需要时可方便地调用查看。它可以记录每部专辑合集的名称、歌手,每首歌曲的名称、歌手或演唱乐队、时间和歌词,并且可以任意设

14、置每一项的字体、字号和颜色,以达到视觉上的享受。另外,它还能将每首歌曲对应一个音乐文件您只需要在浏览歌词的同时轻轻一按,就能马上听到这首歌,您甚至可以选择在打开这首歌曲时就自动播放这首歌曲,做到完全的自动化。音乐文件管理器可以方便的管理磁盘内的音乐文件,当你选择添加文件时,管理器会直接弹出磁盘上的所有文件供你选择,你可以选择一个或多个文件添加进管理器,方便对文件的管理。当你选中一首歌曲,就会出现试听歌曲、查找歌曲、修改歌曲信息等标签,也可以删除选定的歌曲。还可以查看歌曲的参数设置。音乐查找模块包括按照不同的查找方式来遍历乐库,查找歌曲。播放列表管理模块包括在播放列表中添加歌曲,移除歌曲,增加本

15、地文件夹,移除本地文件夹,新建播放列表,清空播放列表,删除播放列表等。1.3开发平台及环境本系统采用的开发平台是微软公司的Visual Studio 平台,选择JAVA作为应用程序开发工具。1.3.1 JAVA简介Java是Sun公司推出的新一代面向对象程序设计语言,特别适合于Internet应用程序开发。Java的产生与流行是当今Internet发展的客观要求,java是一门各方面性能都很好的编程语言,特别适合于Internet应用程序开发。Java的产生与流行是当今Internet发展的客观要求,java是一门各方面性能都很好的编程语言,它的基本特点是简单、面向对象、分布式、解释的、健壮的

16、、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的,特别适合在Internet环境上开发的应用系统。1.3.2 MyEclipse6.0集成开发环境Eclipse是一个开发源代码的,基于java的可扩展开发平台。就其本身而言,他只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse附带了一个标准的插件集,其中就包括java开发工具(Java Development Tools,JDI)。Eclipse3.4.1是目前的最新版本,我们可以在其官方网站上下载。MyEclipse是Eclipse的插件,集成了对Spring,Struts,JDBC等主流JavaEE

17、组件开发插件的支持,大大简化了JavaEE应用的开发 。不同版本的MyEclipse都要求与特定版本的Eclipse配合,这在下载MyEclipse时都能看到。1.4 ID3是什么ID3标签是MP3文件中用于描述音乐信息的数据元素(metadata)。我们知道,MP3实际上是MPEG 1 Layer 3的缩写,它只定义了一种数据压缩方式,并没有特别说明如何在文件中添加描述音乐本身的信息。ID3的出现解决了这个问题,它通过在MP3数据前面或者后面添加描述信息,让管理和组织MP3更容易。 ID3目前有多个版本,最常见的是ID3 V1.1和ID3 V2.4。 ID3的版本 如果没有ID3,那么人们只

18、能根据文件名判断一首歌它是什么内容了,何况就算听出了是什么歌,它的演唱者、专辑名称你也未必背得下来,所以给MP3文件增加内置的标签是理所当然的事情。有趣的是,MP3的标签并没有一个ISO国际标准,ID3的各种版本目前只是一个近乎事实上的标准,并没有人强迫播放器或者编码程序必须支持它。 根据维基百科全书的解释,ID3 V1是由Eric Kemp在1996年发明的。ID3 V1是一组附加在音乐文件后面的数据,它的长度是固定的128字节。ID3V1.0的定义如下表: 其中流派一共定义了79种,流行的播放软件Winamp则把它扩展到了125种,从Blues到Noise到Dance Hall,非常丰富,

19、在许多支持ID3编辑的软件中都可以看到这个列表,但是国内用户似乎不太在意这个标记,大多数人甚至不知道自己的歌曲到底属于哪一个分类。 这些内容一共只有128个字节,并不算累赘。由于附加在文件尾部,所以播放器不必考虑它的影响,即使不支持ID3标记也不会影响音乐的还原某些很老的播放器确实可能会在播放到这里的时候发出噪音或者报错。但是标记在文件尾部也会造成一个问题,那就是如果还没有读到文件末尾,我们什么信息也看不到。对硬盘和闪存里面的歌曲这当然不是问题,但是如果你通过流媒体方式直接在网络上收听,就会发现它的缺陷了。 细心的人会注意到ID3V1.0没有包括曲目序号的定义,所以Michael Mutsch

20、ler在1997年进行了改进,引入了版本1.1。通过占用备注字段的最后两个字节,用一个00字节作标记,另一个字节改为序号,可以让ID3支持曲目编号了。一个字节的空间让ID3 V1.1支持最高到255的曲目序号,考虑到一张唱片超过256个曲目的可能性极小,这个改进还是相当合理的。 有趣的工具MP3ext MP3ext是Windows的一个扩展工具,让你可以直接在Windows浏览器里面查看和编辑MP3标记信息,还能直接用图标告诉你文件的编码速率。它是一个功能强大的免费软件,可以在http:/odin.mutschler.de/mp3ext/MP3ext.html以及 V1.1的发明人? ID3V

21、1和V1.1实际上要求使用ISO 8859-1拉丁字母编码,但是很多人为了方便直接使用自己当前操作系统的代码页。大多数情况下这不算什么问题,但是在跨越语言平台的时候就会出现乱码等情况。例如你在中文操作系统下查看西班牙语的歌曲信息,可能就会看到奇怪的乱码,甚至某些ID3编辑软件可能处理不了中文。 随着ID3应用的普及,人们逐渐发现ID3V1过于简单了,很多感兴趣的信息无法加入,比如作曲者、歌词、演奏者、指挥等等进一步的信息无法附着其上,甚至连比较长的曲目名都处理不了,于是ID3V2的出现也就是顺理成章的了。 与死板的ID3V1不同,ID3V2是一个灵活的标签格式,它不但提供了更丰富的预定义字段和

22、更长的数据空间,而且支持用户自定帧,它的长度也是可变的。于是,利用ID3V2,我们不但可以让MP3附带歌词,而且可以包括唱片封面图片、音色调节设置、甚至MTV影像和卡拉OK字幕。 ID3V2的灵活性和可扩展性让用户可以给音乐文件添加任何想得出来的相关信息。它支持最大256MB的数据,最长的数据帧可以达到16MB。所以如果你愿意,ID3V2增加的数据可以让附加信息庞大到比歌曲信息本身还要占据更多空间的地步。 缺省状况下,ID3V2附加于文件头部,但是这也不会影响不支持ID3V2的播放器,因为它特意设计为用“非同步”方式储存信息,不兼容的播放器会简单地跳过这一部分。在ID3V2.4的版本中用户也可

23、以选择把它附加到文件尾部。把信息放到文件头部对于流媒体播放来说有很大优势在听到音乐之间关于乐曲本身的信息就已经可以显示了。但是这么做的缺点是如果用工具软件改变了ID3的长度,那么整个文件都需要重新写入,效率受到影响。另外,ID3V2支持UNICODE,不同语言的信息可以比较好地互相兼容。第二章 系统需求分析2.1系统目标本系统的目标是为了实现一个音乐文件管理器,用来管理磁盘上大量的音乐文件,它可以将这些音乐文件进行分类列表,也可以完成对歌曲的搜索功能,你可以把磁盘上的音乐文件进行分类,然后添加进管理器,管理器可以将这些文件列表管理,在音乐列表中,你可以选中列表中的某一首歌曲,直接试听,还可以修

24、改这首歌曲的参数,包括歌曲的歌词、演唱者等等信息。你也可以选中多个歌曲,进行批量操作,当然,你也能对列表进行操作,比如修改名称,清除列表等等。你还可以根据自己的喜好,对文件进行分类,根据分类更加方便的查找你喜欢的歌曲。2.2系统功能需求分析一个软件系统设计的成败,除了在功能上要尽可能地完善以外,在界面设计上也有很大的决定性作用。如果你的软件界面很糟糕,不能让使用该软件的用户满意,那么你开发的产品将被“冻结”起来,得不到用户的响应。所以,软件产品的界面设计应该具有友好性这一特点。除此之外,还应该有简洁性。如果你的产品只注意了友好美观的界面,而使得你的界面很复杂,将会给用户带来极大的不便,从而会适

25、得其反。比如,一个最简单的操作用户要点击一个按钮,而你的界面上到处都是按钮图片之类的,这就会让用户花上很长的时间去寻找要点击的按钮,这样一来,当然就不能使用户满意了。基于此,本系统将使用Java来设计界面,并且共有3个界面窗口,分别是:文件夹窗口、列表窗口、参数窗口。为了更好地实现系统的各项功能及这些功能的完整性,现在把系统共分为以下几大模块进行设计:(1) 添加文件模块(2) 添加目录模块(3) 查找歌曲模块(4) 列表管理模块(5) 帮助模块2.2.1需求分析的任务需求分析是软件定义时期的最后一个阶段,也是设计数据库的一个起点,它确定了系统必须完成哪些工作,提出完整、准确、清晰和具体的要求

26、,直接影响到后面各个阶段的设计,及设计结果是否合理和实用。需求分析的任务是通过详细调查现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计系统。其主要解决的问题:信息要求:用户希望得到什么样的信息。处理要求:明确用户对数据有什么样的处理要求,从而确定数据之间的相互关系。安全性与完整性要求:确定用户的最终需求是一件很困难的事情,用户缺少计算机知识,不能准确表达自己的需求,所提出的需求往往经常变化。设计人员缺少用户的专业知识,不易理解用户的真正需求。因此在需求分析阶段要求客户的广泛参与

27、,设计人员也要去熟悉客户的业务工作,才能逐步确定用户的实际需求。2.2.2 可行性分析任务可行性分析的任务就是进一步澄清问题定义,以期用最小的代价在尽可能短的时间内确定问题是否可以解决。可行性分析:1、技术可行性在现有技术条件下,因为Java日趋成熟,数据库的技术也掌握的越来越多,文件管理器功能正在进一步完善。2、经济可行性经济方面由于是自行开发,基于个人PC,所以经费开销很小,系统运行之后产生的效益将远大于开发成本,经济可行。3、操作可行性系统实现从用户角度考虑,所以所有操作都是非常简单的鼠标键盘操作,界面设计清晰明了,用户在操作方面只要有普通计算机操作基础的都可以胜任,所以操作方面也是可行

28、的。2.2.3 MP3音乐文件管理器的需求分析用户的需求具体体现在各种信息的提供、保存、更新、查询和删除上,以及操作的简单性和方便性,用户的需求如下:1、它可以从磁盘上添加文件,并对添加的文件歌曲进行列表分类2、它可以对列表进行管理,包括清空列表,删除列表内的歌曲,试听列表内的歌曲等等。3、它可以记录每部专辑合集的名称、歌手,每首歌曲的名称、歌手或演唱乐队、时间和歌词,并且可以任意设置每一项的字体、字号和颜色,以达到视觉上的享受。4、对歌曲文件进行改名、对歌曲的播放次序进行排序,修改歌曲文件的信息(批量操作)5、查找歌曲,根据分类,随时查找自己想听的歌曲,及歌曲的所有信息2.2.4 假定和约束

29、1、开发经费方面,由于是毕业设计,所以无需资金投入,一切都是在项目组成员课外时间完成。2、由于是应用服务程序,一切以用户的需求为最根本的出发点。3、考虑到用户的计算机操作水平有限,希望开发出的系统应保证界面友好,操作简单明了,性能可靠,易于维护,可扩展,易于升级。2.2.5 文件管理程序的数据流图0层图1层图呈现音乐列表放列表管理列表生成器选择MP3文件MP3音乐管理程序文件列表文件列表音乐列表音乐列表本地文件网络资源url选择MP3文件文件流文件路径文件列表将文件读入流读取文件标签文件列表加入音乐队列音乐列表歌曲信息标签组歌曲信息对象文件地址2层图图2.1第三章 系统分析与设计3.1 系统功

30、能模块设计系统功能模块设计是软件开发中非常重要的一部分,因为只有做好功能模块的设计,编写程序的时候才不至于盲目,也不至于没有条理性,甚至会漏掉很多的东西,这就像一个建筑物的设计图一样,由此可见它的重要性。本系统共分为以下几个窗口,它们分别是:文件夹窗口、列表窗口、参数窗口。为了更好地实现系统的各项功能及这些功能的完整性,现在把系统共分为以下几大模块进行设计:(6) 添加文件模块(7) 添加目录模块(8) 查找歌曲模块(9) 列表管理模块(10) 帮助模块3.1.1 音乐文件管理系统功能模块图音乐文件管理系统主要实现的是用户能管理磁盘上大量的音乐文件,它可以将这些音乐文件进行分类列表,也可以完成

31、对歌曲的搜索功能,你可以把磁盘上的音乐文件进行分类,然后添加进管理器,管理器可以将这些文件列表管理,在音乐列表中,你可以选中列表中的某一首歌曲,直接试听,还可以修改这首歌曲的参数,包括歌曲的歌词、演唱者等等信息。你也可以选中多个歌曲,进行批量操作,当然,你也能对列表进行操作,比如修改名称,清除列表等等。你还可以根据自己的喜好,对文件进行分类,根据分类更加方便的查找你喜欢的歌曲。下图3.1为系统的功能模块图:图3.1 功能模块图3.1.2 系统功能模型图系统功能分为三大模块:MP3文件搜索、MP3播放列表维护和MP3播放,搜索可分为手动搜索和自动搜索,播放列表维护包括增加记录、修改记录删除记录及

32、对文件的修改还有列表格式的转换等等,下图为系统功能模型图:图3.2 系统功能模型图3.2 系统的几个重要UML图uml图可以很直观的反应系统说要实现的功能可以使用用例图、类图、时序图等显示系统的执行过程、实现功能uml图大大的方便了开发人员的开发步骤,使开发人员能够分模块、分步骤的对系统进行开发。类图表示不同的实体(人、事物和数据)如何彼此相关;换句话说,它显示了系统的静态结构。类图还可用于表示实现类,实现类就是程序员处理的实体。实现类图或许会与逻辑类图显示一些相同的类。然而,实现类图不会使用相同的属性来描述。类在类图上使用包含三个部分的巨型来描述。最上面的部分显示类的名称,中间部分包含类的属

33、性,最下面的部分包含类的操作(或者说“方法”)。图3.3 核心类图 图3.4 播放器类图图3.5 获取APEV2搜索顺序图第四章 详细设计与实现这里将介绍本系统的技术重点、难点的设计与实现。在整个项目中,大量运用了Java类库提供的功能,包括Java swing高级组件的使用,基于对象序列化的配置保持,基于DnD技术的拖放批量文件的播放等。本系统最重要的部分是获取标签,通过标签来修改文件信息,对文件分类,建立列表等。4.1 算法分析超类Mp3Tag,三个子类Mp3TagAPEV2、Mp3TagID3v1、Mp3TagID3v23UML类图如图4.1图 4.1 ID3标签uml类图4.2 获取标

34、签的详细代码package fileread;import java.io.File;import java.io.FileInputStream;import model.APEV2;import model.ID3V1;import model.ID3V2;public class FindBQ private File file;private long length;ID3V2 id3v2 = new ID3V2();ID3V1 id3v1 = new ID3V1();public FindBQ(File file)this.file = file;length = file.leng

35、th()-128;public ID3V2 gotID3V2() throws Exceptionreturn id3v2=id3v2.ReaderID3V2(this.file);public ID3V1 gotID3V1() throws Exceptionreturn id3v1.ReaderID3V1(file, length);public APEV2 ReaderAPEV2()throws Exceptionbyte header = new byte8;APEV2 apev2 = new APEV2();FileInputStream fr = new FileInputStre

36、am(this.file);fr.skip(id3v2.getSize_tag()+10);/Size_tag数值有问题System.out.println(id3v2.getSize_tag();fr.read(header);System.out.println(new String(header);if(apev2.hasAPEV2(header)System.out.println(在ID3V2之后);System.out.println(它含有APEV2标签);fr.read(apev2.getVersion();fr.read(apev2.getTagSize();fr.read(

37、apev2.getItemCount();fr.read(apev2.getTagflags();fr.read(apev2.getReserved();fr.read(apev2.getItemValSize();fr.read(apev2.getItemflags();elsefr.skip(this.length-50-id3v2.getSize_tag();System.out.println(id3v2.getSize_tag();fr.read(header);if(apev2.hasAPEV2(header)System.out.println(在ID3V1之前);System.

38、out.println(它含有APEV2标签);fr.read(apev2.getVersion();fr.read(apev2.getTagSize();fr.read(apev2.getItemCount();fr.read(apev2.getTagflags();fr.read(apev2.getReserved();fr.read(apev2.getItemValSize();fr.read(apev2.getItemflags();fr.close();return apev2;4.3 标签的修改和删除package sXie.Mp3Tag;import java.io.File;i

39、mport java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.io.UnsupportedEncodingException;import javax.activation.UnsupportedDataTypeException;public class Mp3TagID3v1 extends Mp3Tag String sTitle = ; String sArtist = ; String sAlbum = ; String sYear

40、= ; String sComment = ; int iTrack = 0; int iGenre = 0; public Mp3TagID3v1(File f) super(f); / TODO Auto-generated constructor stub private String ReadFixSizeString(byte in,int off,int size,String Decoder) throws UnsupportedEncodingException int length = size+off; int i = off; for(;ilength;i+) if(in

41、i = 0) break; return new String(in,off,i-off,Decoder); public void Decode(String Decoder) throws FileNotFoundException, UnsupportedEncodingException, UnsupportedDataTypeException / TODO Auto-generated method stub bTagInfo = false; sTitle = ; sArtist = ; sAlbum = ; sYear = ; sComment = ; iTrack = 0;

42、iGenre = 0; byte iD3v1 = new byte128; RandomAccessFile fOpera = new RandomAccessFile(fSour, r); try fOpera.seek(fSour.length()-128); fOpera.read(iD3v1); fOpera.close(); catch (IOException e) / TODO Auto-generated catch block try fOpera.close(); catch (IOException e1) throw new UnsupportedDataTypeExc

43、eption(); String id3v1Sign = new String(iD3v1,0,3); if(id3v1Sign.equalsIgnoreCase(TAG) sTitle = ReadFixSizeString(iD3v1, 3, 30, Decoder).trim(); sArtist = ReadFixSizeString(iD3v1, 33,30, Decoder).trim(); sAlbum = ReadFixSizeString(iD3v1, 63,30, Decoder).trim(); sYear = ReadFixSizeString(iD3v1, 93, 4

44、, Decoder).trim(); if(iD3v1125 = 0) sComment = ReadFixSizeString(iD3v1, 97,28, Decoder).trim(); iTrack = iD3v1126; else sComment = ReadFixSizeString(iD3v1, 97,30, Decoder).trim(); iTrack = 0; iGenre = iD3v1127&0xFF; bTagInfo = true; public void WriteTag() throws UnsupportedEncodingException final String Decoder = GBK; RandomAccessFile fOpera = null; int length = 0; long fLen = 0; byte sSour = TAG.getBytes(Decoder); byte bID3v1Infos = new byte128; try fOpera = new RandomAccessFile(fSour, rw); fLen = fOpera.length();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号