AIR完成修改mp3文件标签

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" title="设置mp3文件" width="600" height="450"
 fontFamily="宋体" fontSize="14" alwaysInFront="true" creationComplete="init();" close="closewin()">
 <mx:Script>
 <![CDATA[
 private var fileToOpen:File = File.applicationDirectory;
 private var fileStr:FileStream = new FileStream();//数据流打开文件可以同步 可以异步
 private function init():void
 {    
  var screenBounds:Rectangle = Screen.mainScreen.bounds; 
  nativeWindow.x = (screenBounds.width - nativeWindow.width) / 2;
  nativeWindow.y = (screenBounds.height - nativeWindow.height) / 2;
 }
 private function fileOpen(event:Event):void
 {    
  fileStr.position = fileToOpen.size - 128;
  if (fileStr.readMultiByte(3, "gbk").match(/tag/i))
  {
   var id3Title:String = fileStr.readMultiByte(30, "gbk");
   trace("id3Title标题:"+id3Title);
   var id3Artist:String = fileStr.readMultiByte(30, "gbk");
   trace("艺术家:"+id3Artist);
   var id3Album:String = fileStr.readMultiByte(30, "gbk");
   trace("唱片:"+id3Album);
   var id3Year:String = fileStr.readMultiByte(4, "gbk");
   trace("唱片:"+id3Year);
   var id3Comment:String = fileStr.readMultiByte(30, "gbk");
   //var id3GenreCode:String = fileStr.readByte().toString(10);
   trace("唱片:"+id3Comment);
  }
 }
 private function selectTextFile(root:File):void
 {
  var txtFilter:FileFilter = new FileFilter("mp3", "*.mp3;mpeg3");
  root.browseForOpen("Open", [txtFilter]);
  root.addEventListener(Event.SELECT, fileSelected);
 }
 private function fileSelected(event:Event):void
 {
  msg.text="读文件:"+fileToOpen.nativePath;
  //fileStr.addEventListener(Event.COMPLETE, fileOpen);
  //fileStr.openAsync(fileToOpen, FileMode.UPDATE);//异步打开文件防止文件过大
  fileStr.open(fileToOpen, FileMode.UPDATE);
  trace(fileToOpen.nativePath);
  fileStr.position = fileToOpen.size - 128;
  if (fileStr.readMultiByte(3, "gbk").match(/tag/i))
  {
   Title.text = fileStr.readMultiByte(30, "gbk");   
   Artist.text = fileStr.readMultiByte(30, "gbk");  
   Album.text = fileStr.readMultiByte(30, "gbk");   
   syear.text = fileStr.readMultiByte(4, "gbk");   
   Comment.text = fileStr.readMultiByte(30, "gbk");
   //var id3GenreCode:String = fileStr.readByte().toString(10);流派
   //trace("注释:"+id3Comment);
  }
  fileStr.close();
 }
 private function fileSet():void
 { 
  fileStr.open(fileToOpen, FileMode.UPDATE); 
  fileStr.position = fileToOpen.size - 125;
  fileStr.writeMultiByte(Title.text+String.fromCharCode(0),"gbk"); 
  fileStr.position=fileToOpen.size - 95;
  fileStr.writeMultiByte(Artist.text+String.fromCharCode(0),"gbk");
  fileStr.position=fileToOpen.size - 65;
  fileStr.writeMultiByte(Album.text+String.fromCharCode(0),"gbk"); 
  fileStr.position=fileToOpen.size - 35;
  fileStr.writeMultiByte(syear.text+String.fromCharCode(0),"gbk");
  fileStr.position=fileToOpen.size - 31;
  fileStr.writeMultiByte(Comment.text+String.fromCharCode(0),"gbk"); 
  msg.text="写文件结束:"+fileToOpen.nativePath;  
  fileStr.close();
 }
 private function closewin():void
 {     
 this.close();
 }
 ]]>
</mx:Script>
<mx:Canvas width="400" x="0" y="0" height="300">
 <mx:Label text="" id="msg"   width="314" x="10" y="2" height="47"/> <mx:Button label="文件" click="selectTextFile(fileToOpen)"  x="332" y="10"/>
 <mx:Label text="标题"   x="10" y="57"/><mx:TextInput text="" id="Title"   x="90" y="57"  width="230" maxChars="30"/>
 <mx:Label text="艺术家"  x="10" y="87"/> <mx:TextInput text="" id="Artist" x="90" y="87"  width="230" maxChars="30"/>
 <mx:Label text="唱片"  x="10" y="117"/> <mx:TextInput text="" id="Album" x="90" y="117"  width="230" maxChars="30"/>
 <mx:Label text="发行年"  x="10" y="147"/> <mx:TextInput text="" id="syear" x="90" y="147" restrict="0-9" width="230" maxChars="4"/>
  <mx:Label text="注释"  x="10" y="177"/> <mx:TextInput text="" id="Comment" x="90" y="177"  width="230" maxChars="30"/> 
<mx:Button label="设置" click="fileSet()" x="10" y="207"/><mx:Button label="退出" x="320" click="closewin()" y="207"/>
</mx:Canvas>
</mx:Window>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值