非常感谢可以私信问我一些问题,这是一种信赖,一种支持,一种动力。真的非常感谢。 如果大家有关于java的任何问题,都可以私信我,希望可以帮到大家,同时也是对我的一种信赖,一种支持,一种动力。 若你感觉读到这篇文章对你有启发,能引起你的思考。请不要吝啬你的钱包,你的任何打赏或者捐赠都是对我莫大的鼓励。
感谢
问题
源码
import java.io.File; import java.util.*; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.SourceDataLine; public class Test{ /** * @param args */ public static void main(String[] args) { Test lx = new Test(); lx.run(); Thread sy=new Thread(); sy.start(); } public void run() { //File wjl = new File(wjm); AudioInputStream ypsrl = null; try { ypsrl = AudioSystem.getAudioInputStream(new File("image/诗翼梦环 - 日本短信铃声.mp3")); } catch (Exception e) { System.out.println("文件为空"); } AudioFormat format = ypsrl.getFormat(); SourceDataLine aqsj = null; DataLine.Info info = new DataLine.Info(SourceDataLine.class, format); try { aqsj = (SourceDataLine) AudioSystem.getLine(info);// 格式化包装 aqsj.open(format); } catch (Exception e) { } aqsj.start(); int zjtj = 0; byte[] hczj = new byte[1024];// 小需要缓冲 try { while (zjtj != -1) { zjtj = ypsrl.read(hczj, 0, hczj.length); if (zjtj >= 0) aqsj.write(hczj, 0, zjtj); } } catch (Exception e) { } finally { aqsj.drain();// 将残留部分处理干净 aqsj.close(); } } }
问题分析和解决
new File("image/thatgirl.mp3")
。然后通过javac编译,java运行,结果如下:
文件为空
,并且有一个空指针(NullPointerException)的异常。观察源码,这个文件为空
是自己写的打印语句,并没有打印真正的异常信息,于是加上异常打印语句。try { ypsrl = AudioSystem.getAudioInputStream(new File("image/thatgirl.mp3")); } catch (Exception e) { e.printStackTrace(); // 加上打印异常语句,查看真正的异常信息 System.out.println("文件为空"); }
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file
,看这个异常并不是java.io的找不到文件的异常,于是尝试将文件路径改为一个不存在的路径,new File("image/thatgirlxxx.mp3")
,运行查看结果,如下:
java.io.FileNotFoundException
才是找不到文件的异常。javax.sound
类,这就不怕了,是java标准类库中的,不是小众的第三方类库,于是准备查看一下相关文档。如何查看文档请看之前博文【java基础(十)】查阅API文档。AudioSystem.getAudioInputStream(File file)
方法,如下:
UnsupportedAudioFileException
的描述,如果不是系统中合法的音频文件数据。(基本接近真相)。于是在想,合法的音频文件是什么?于是百度这个异常:
AudioFileFormate
支持wav文件格式,于是下载了一个wav文件格式音频。new File("image/river.wav")
,替换后运行程序,一切正常,可以播放音频。
建议
System.out.println("文件为空");
这个应该会对你造成很大的误解,误解为找不到文件,文件路径问题。try...catch
尽量不要直接最大的异常(catch Exception),如果能够明确抛出的异常,就直接catch可能抛出的异常。如果不明确会抛出什么异常,应该将异常信息打印出来,使用e.printStackTrace();
。try...catch
应该在catch中做异常时候的处理,想源码中并没有做处理,还不如直接将异常throw出去,交给上层做处理。有问题可以随时问我
捐赠
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算