java高手进来帮我给段代码 写下注释. 20
这时一个读取mp3相关信息的代码:packagecore;importjava.io.File;importjava.io.IOException;importjava....
这时一个读取mp3相关信息的代码:
package core;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class MP3InfoReader {
//
// 名称 *******位置**** 长度**** 内容
// Header *****1-3 **** 3 **** 标签头
// Title *******4-33 ****30 **** 标题
// Artist ******34-63 **** 30 **** 艺术家
// Album ******64-93 **** 30 **** 专辑
// Year *******94-97 **** 4 **** 出品年代
// Comment ****98-127 ****30 **** 备注
// Cenre ******128 **** 1 **** 类型
//
private static final int TAG_SIZE = 128;
private static final int TITLE_SIZE = 30;
private static final int ARTIST_SIZE = 30;
private static final String TAG_START = "TAG";
public static String handleID3v1(File file) throws IOException {
byte[] buf = new byte[TAG_SIZE];
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
randomAccessFile.seek(randomAccessFile.length() - TAG_SIZE);
randomAccessFile.read(buf, 0, TAG_SIZE);
randomAccessFile.close();
String tag = new String(buf, 0, TAG_SIZE, "GBK");
int start = TAG_START.length();
String title = tag.substring(start, start += TITLE_SIZE).trim();
String artist = tag.substring(start, start += ARTIST_SIZE).trim();
return title + artist;
}
} 展开
package core;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
public class MP3InfoReader {
//
// 名称 *******位置**** 长度**** 内容
// Header *****1-3 **** 3 **** 标签头
// Title *******4-33 ****30 **** 标题
// Artist ******34-63 **** 30 **** 艺术家
// Album ******64-93 **** 30 **** 专辑
// Year *******94-97 **** 4 **** 出品年代
// Comment ****98-127 ****30 **** 备注
// Cenre ******128 **** 1 **** 类型
//
private static final int TAG_SIZE = 128;
private static final int TITLE_SIZE = 30;
private static final int ARTIST_SIZE = 30;
private static final String TAG_START = "TAG";
public static String handleID3v1(File file) throws IOException {
byte[] buf = new byte[TAG_SIZE];
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r");
randomAccessFile.seek(randomAccessFile.length() - TAG_SIZE);
randomAccessFile.read(buf, 0, TAG_SIZE);
randomAccessFile.close();
String tag = new String(buf, 0, TAG_SIZE, "GBK");
int start = TAG_START.length();
String title = tag.substring(start, start += TITLE_SIZE).trim();
String artist = tag.substring(start, start += ARTIST_SIZE).trim();
return title + artist;
}
} 展开
1个回答
展开全部
这时一个读取mp3相关信息的代码:
package core; //声明 包
import java.io.File; //导入类包
import java.io.IOException;
import java.io.RandomAccessFile;
public class MP3InfoReader { //定义类
//
// 名称 *******位置**** 长度**** 内容 这些都是MP3文件说明信息
// Header *****1-3 **** 3 **** 标签头
// Title *******4-33 ****30 **** 标题
// Artist ******34-63 **** 30 **** 艺术家
// Album ******64-93 **** 30 **** 专辑
// Year *******94-97 **** 4 **** 出品年代
// Comment ****98-127 ****30 **** 备注
// Cenre ******128 **** 1 **** 类型
//
private static final int TAG_SIZE = 128; 定义常量值
private static final int TITLE_SIZE = 30;
private static final int ARTIST_SIZE = 30;
private static final String TAG_START = "TAG";
//定义静态方法,他需要传进一个FILE类型参数,方法向上抛出IO异常
public static String handleID3v1(File file) throws IOException {
byte[] buf = new byte[TAG_SIZE]; //定义一个长度为128的字节数组
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r"); //定义一个随机访问对象,格式为只读模式
//将随机文件读取的指针指向除去末128字节之前的位置处
randomAccessFile.seek(randomAccessFile.length() - TAG_SIZE);
//开始读取文件,读取128字节到BUF里面。
randomAccessFile.read(buf, 0, TAG_SIZE);
//关闭随机读取
randomAccessFile.close();
将读取的128个字节按照GBK编码方式转换成String类型
String tag = new String(buf, 0, TAG_SIZE, "GBK");
//定义整形START,初始化值为字符串TAG_START的值的长度。
int start = TAG_START.length();
//根据已经获取的标题位置将标题从TAG里取出来
String title = tag.substring(start, start += TITLE_SIZE).trim();
//根据已经获取的标题位置将歌手从TAG里取出来
String artist = tag.substring(start, start += ARTIST_SIZE).trim();
//返回标题和歌手
return title + artist;
}
}
说明,这个程序的整个思路就是,从已知的文件格式里面,取出文件的最后128字节并按照GBK的方式编码,然后从已经编码的字符串里面根据需要的内容截取信息。并作为该方法的返回值返回。
不懂可以继续提问。
package core; //声明 包
import java.io.File; //导入类包
import java.io.IOException;
import java.io.RandomAccessFile;
public class MP3InfoReader { //定义类
//
// 名称 *******位置**** 长度**** 内容 这些都是MP3文件说明信息
// Header *****1-3 **** 3 **** 标签头
// Title *******4-33 ****30 **** 标题
// Artist ******34-63 **** 30 **** 艺术家
// Album ******64-93 **** 30 **** 专辑
// Year *******94-97 **** 4 **** 出品年代
// Comment ****98-127 ****30 **** 备注
// Cenre ******128 **** 1 **** 类型
//
private static final int TAG_SIZE = 128; 定义常量值
private static final int TITLE_SIZE = 30;
private static final int ARTIST_SIZE = 30;
private static final String TAG_START = "TAG";
//定义静态方法,他需要传进一个FILE类型参数,方法向上抛出IO异常
public static String handleID3v1(File file) throws IOException {
byte[] buf = new byte[TAG_SIZE]; //定义一个长度为128的字节数组
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r"); //定义一个随机访问对象,格式为只读模式
//将随机文件读取的指针指向除去末128字节之前的位置处
randomAccessFile.seek(randomAccessFile.length() - TAG_SIZE);
//开始读取文件,读取128字节到BUF里面。
randomAccessFile.read(buf, 0, TAG_SIZE);
//关闭随机读取
randomAccessFile.close();
将读取的128个字节按照GBK编码方式转换成String类型
String tag = new String(buf, 0, TAG_SIZE, "GBK");
//定义整形START,初始化值为字符串TAG_START的值的长度。
int start = TAG_START.length();
//根据已经获取的标题位置将标题从TAG里取出来
String title = tag.substring(start, start += TITLE_SIZE).trim();
//根据已经获取的标题位置将歌手从TAG里取出来
String artist = tag.substring(start, start += ARTIST_SIZE).trim();
//返回标题和歌手
return title + artist;
}
}
说明,这个程序的整个思路就是,从已知的文件格式里面,取出文件的最后128字节并按照GBK的方式编码,然后从已经编码的字符串里面根据需要的内容截取信息。并作为该方法的返回值返回。
不懂可以继续提问。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询