问题描述
小弟自学JAVA不久,现在看书上一关于读取MP3文件ID3数据的程序,我每次执行都提示Error—java.io.FileNotFoundException:11(系统找不到指定的文件。)求解啊!!原文代码如下:importjava.io.*;publicclassID3Reader{publicstaticvoidmain(String[]arguments){try{Filesong=newFile(arguments[0]);FileInputStreamfile=newFileInputStream(song);intsize=(int)song.length();file.skip(size-128);byte[]last128=newbyte[128];file.read(last128);Stringid3=newString(last128);Stringtag=id3.substring(0,3);if(tag.equals("TAG")){System.out.println("Title:"+id3.substring(3,32));System.out.println("Artist:"+id3.substring(33,62));System.out.println("Album:"+id3.substring(63,91));System.out.println("Year:"+id3.substring(93,97));}else{System.out.println(arguments[0]+"doesnotcontain"+"ID3info.");}file.close();}catch(Exceptione){System.out.println("Error—"+e.toString());}}}///////////////////////////////参数设置如图:
解决方案
解决方案二:
将arguments[0]文件放到项目的根目录下面,也就是跟src同级,就可以读到了
解决方案三:
先谢谢@magi1201回复,但我放src文件夹后还是提示找不到
解决方案四:
引用2楼leodefrank的回复:
先谢谢@magi1201回复,但我放src文件夹后还是提示找不到
项目根目录下面,跟src同级,不是src下面你的放到Java24目录下面
解决方案五:
你看看这个,方式和你的不同,封装了一下packagemp3;importjava.awt.image.BufferedImage;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.net.URL;importjava.util.HashMap;importjava.util.Map;importjavax.imageio.ImageIO;importnet.coobird.thumbnailator.Thumbnails;importorg.jaudiotagger.audio.exceptions.InvalidAudioFrameException;importorg.jaudiotagger.audio.exceptions.ReadOnlyFileException;importorg.jaudiotagger.audio.mp3.MP3AudioHeader;importorg.jaudiotagger.audio.mp3.MP3File;importorg.jaudiotagger.tag.TagException;importorg.jaudiotagger.tag.id3.AbstractID3v2Frame;importorg.jaudiotagger.tag.id3.framebody.FrameBodyAPIC;publicclassReadMp3Info{/****@parammp3Pathmp3文件地址*@paramsavePathMP3内嵌图片的存放地址*@return该MP3的文件信息length:mp3时长单位:秒;size:mp3文件大小单位:字节;singer:mp3演唱者;*author:作者album:专辑createTime:文件创建时间*@throwsInvalidAudioFrameException*@throwsReadOnlyFileException*@throwsTagException*@throwsIOException**/publicstaticMap<String,String>getMp3InfoMap(Stringmp3Path,StringsavePath)throwsIOException,TagException,ReadOnlyFileException,InvalidAudioFrameException{Map<String,String>mp3Map=newHashMap<String,String>();FilesourceFile=newFile(mp3Path);MP3Filefile=newMP3File(mp3Path);MP3AudioHeaderheader=file.getMP3AudioHeader();mp3Map.put("length",header.getTrackLengthAsString());mp3Map.put("size",String.valueOf(sourceFile.length()));MapframeMap=file.getID3v2Tag().frameMap;AbstractID3v2Framea3f_singer=(AbstractID3v2Frame)frameMap.get("TPE1");AbstractID3v2Framea3f_author=(AbstractID3v2Frame)frameMap.get("TALB");AbstractID3v2Framea3f_album=(AbstractID3v2Frame)frameMap.get("TIT2");AbstractID3v2Framea3f_time=(AbstractID3v2Frame)frameMap.get("TYER");mp3Map.put("singer",a3f_singer.getContent());mp3Map.put("author",a3f_author.getContent());mp3Map.put("album",a3f_album.getContent());mp3Map.put("createTime",a3f_time.getContent());AbstractID3v2Framea3f_pic=(AbstractID3v2Frame)frameMap.get("APIC");FrameBodyAPICfba=(FrameBodyAPIC)a3f_pic.getBody();byte[]imageData=fba.getImageData();FileOutputStreamfos=newFileOutputStream(savePath);fos.write(imageData);fos.close();returnmp3Map;}publicstaticvoidsaveMp3Pic(StringtmpPath,StringpicPath)throwsIOException,TagException,ReadOnlyFileException,InvalidAudioFrameException{System.out.println("开始存储图片...");MP3Filefile=newMP3File(tmpPath);MapframeMap=file.getID3v2Tag().frameMap;AbstractID3v2Framea3f_pic=(AbstractID3v2Frame)frameMap.get("APIC");FrameBodyAPICfba=(FrameBodyAPIC)a3f_pic.getBody();byte[]imageData=fba.getImageData();FileOutputStreamfos=newFileOutputStream(picPath);fos.write(imageData);fos.close();}publicstaticvoidmain(String[]args)throwsIOException,TagException,ReadOnlyFileException,InvalidAudioFrameException{getMp3InfoMap("E:/test/a.mp3","E:/test/wma.jpg");}}
使用了一个jarjaudiotagger-2.0.3.jar
解决方案六:
你把文件名【11Coda.mp3】文件名改一下【11Coda.mp3】去掉11之后的空格,arguements也是如此改试试看
解决方案七:
谢谢各位,结合magi1201和XUECHANG1解决了,我的问题是1.文件位置没有放对,2.文件名不能包含空格但是为什么不能包含空格呢,书中的MP3文件名也有空格呢...
解决方案八:
如果有空格的话,那arguments[0]就是11,java会把11coda.mp3拆开的,而不是11Coda.mp3,所以Error—java.io.FileNotFoundException:11
解决方案九:
有道理有道理
解决方案十:
Error—java.io.FileNotFoundException:11(系统找不到指定的文件。)求解啊!!就是说,找不到文件。Filesong=newFile(arguments[0]);看看你的这一句的参数。你先用system.out.prinlt(arguments[0]);打印一下看看你的文件路径和文件名是否正确!!