⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp3info.java

📁 mp3的播放
💻 JAVA
字号:
/**************************************************************************
 *	(C) Copyright 2008 by  Tao Liuyuan and Zhang Shuitao.                       *
 *		All Rights Reserved.               								  *
 *     																      *
 *	Project					: KYPlayer     								  *
 *	File					: Mp3Info.java 								  *	
 *	JDK version used        : jdk1.6.0_u4							      *
 * 	Version                 : 1.00				     					  *
 * 	Created				    : 2008.7.6 by  we						  *
 *************************************************************************/
package MP3Player;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * mp3信息类
 * @author  we
 */
public class Mp3Info {

	/**
	 * 自动生成的序列化值
	 */
	private static final long serialVersionUID = 1L;
	
	/**
	 * 文件头1-3
	 */
	private final String TAG = "TAG"; 

	/**
	 * 歌曲名4-33
	 */
	private String songName; 

	/**
	 * 保留位126
	 */
	private byte r1;
	
	/**
	 * 保留位127
	 */
	private byte r2;
	
	/**
	 * 保留位128
	 */
	private byte r3; 

	/**
	 * 是否合法
	 */
	private boolean valid; 

	/**
	 * 此歌曲对应的文件名
	 */
	public transient String fileName; 

	/**
	 * 利用128字节初始化的构造函数
	 * @param mediaFile
	 */
	public Mp3Info(File mediaFile) {
		
		System.out.println(mediaFile.toURI());
		RandomAccessFile ra = null;
		try {
			ra = new RandomAccessFile(mediaFile, "r");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		byte[] buffer = new byte[128];
		
		try {
			ra.seek(ra.length() - 128);
			ra.read(buffer);
			ra.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		if (buffer.length != 128) {
			throw new RuntimeException("数据长度不合法:" + buffer.length);
		}
		String tag = new String(buffer, 0, 3);
		
		// 只有前三个字节是TAG才处理后面的字节
		if (tag.equalsIgnoreCase("TAG")) {
			valid = true;
			songName = new String(buffer, 3, 30).trim();
			r1 = buffer[125];
			r2 = buffer[126];
			r3 = buffer[127];
		} else {
			valid = false;
		}
	}

	/**
	 * 无参构造函数
	 */
	public Mp3Info() {
	}

	/**
	 * 返回是否合法
	 * @return true false
	 */
	public boolean isValid() {
		return valid;
	}

	/**
	 * 得到此对象的128个字节的表示形式
	 * @return byte[]
	 */
	public byte[] getBytes() {
		byte[] data = new byte[128];
		System.arraycopy(TAG.getBytes(), 0, data, 0, 3);
		byte[] temp = songName.getBytes();
		System.arraycopy(temp, 0, data, 3, temp.length > 30 ? 30 : temp.length);

		System.arraycopy(temp, 0, data, 97, temp.length > 28 ? 28: temp.length);
		data[125] = r1;
		data[126] = r2;
		data[127] = r3;
		return data;
	}

	/**
	 * r1属性的get方法
	 * @return byte
	 */
	public byte getR1() {
		return r1;
	}

	/**
	 * r1属性的set方法
	 * @param r1
	 */
	public void setR1(byte r1) {
		this.r1 = r1;
	}

	/**
	 * r2属性的get方法
	 * @return  byte
	 */
	public byte getR2() {
		return r2;
	}

	/**
	 * r2属性的set方法
	 * @param r2
	 */
	public void setR2(byte r2) {
		this.r2 = r2;
	}

	/**
	 * r3属性的get方法
	 * @return byte
	 */
	public byte getR3() {
		return r3;
	}

	/**
	 * r3属性的set方法
	 * @param r3
	 */
	public void setR3(byte r3) {
		this.r3 = r3;
	}

	/**
	 * songName属性的get方法
	 * @return String
	 */
	public String getSongName() {
		return songName;
	}

	/**
	 * songName属性的set方法
	 * @param songName
	 */
	public void setSongName(String songName) {
		if (songName == null) {
			throw new NullPointerException("歌名不能是null!");
		}
		valid = true;
		this.songName = songName;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -