Java如何判断一个文件是否为真实的MP3文件

今天为了实现Java判断文件是否为真实的MP3文件这个小事搞了几个小时, 在搜索引擎找了好久, 但是没有结果, 最后在外网找到了解决办法.希望这个博客能方便更多的小伙伴!

 首先要导入一下这个包

<!-- https://mvnrepository.com/artifact/net.jthink/jaudiotagger -->
		<dependency>
			<groupId>net.jthink</groupId>
			<artifactId>jaudiotagger</artifactId>
			<version>2.2.6-PATHRIK</version>
		</dependency>
public class InspectMP3Test {
    public static void main(String[] args) throws CannotReadException, TagException, InvalidAudioFrameException, ReadOnlyFileException, IOException {
        // 这个是你的MP3文件存放的路径(根据自己情况自己修改)
        String musicPath = "D:/learning/JAVA/music/夜空中最亮的星.mp3";

        // 创建一个新的文件
        File musicFile = new File(musicPath);

        // 将文件转成MP3格式的
        MP3File audioFile = (MP3File) AudioFileIO.read(musicFile);


        if(audioFile.hasID3v1Tag()){
            System.out.println("该文件含有 ID3v1Tag 标识");
        }

        if(audioFile.hasID3v2Tag()){
            System.out.println("该文件含有 ID3v2Tag 标识");
        }

    }
}

因为在MP3文件中是否含有 "TAG" 标识是我们普通人判断MP3文件是否是其他类型文件篡改过来的主要依据, 而MP3有分有 ID3V1 和 ID3V2 通过 org.jaudiotagger.audio.mp3.MP3File; 这个类中的 hasID3v2Tag() 和 hasID3v1Tag()方法就能直接得到结果了.

所以要判断一个文件是否是MP3文件就可以引入 org.jaudiotagger.audio.mp3.MP3File 这个包后直接判断:

public class InspectMP3Test {
    public static void main(String[] args) throws CannotReadException, TagException, InvalidAudioFrameException, ReadOnlyFileException, IOException {
        // 这个是你的MP3文件存放的路径(根据自己情况自己修改)
        String musicPath = "D:/learning/JAVA/music/夜空中最亮的星.mp3";

        // 创建一个新的文件
        File musicFile = new File(musicPath);

        // 将文件转成MP3格式的
        MP3File audioFile = (MP3File) AudioFileIO.read(musicFile);


        /*if(audioFile.hasID3v1Tag()){
            System.out.println("该文件含有 ID3v1Tag 标识");
        }

        if(audioFile.hasID3v2Tag()){
            System.out.println("该文件含有 ID3v2Tag 标识");
        }*/
        
        // 因为MP3格式可能是 ID3v1Tag 或者 ID3v2Tag 的其中的一种, 所以两种都要判断
        if(!audioFile.hasID3v1Tag() && !audioFile.hasID3v2Tag()){
            System.out.println("该文件不是MP3格式");
        }else{
            System.out.println("该文件是MP3格式");
        }

    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值