Applet 编程中多媒体文件放置的位置

 最近看 Java 中的 Applet ,又碰见了令 vivizhyy 头痛的 URL 路径问题。

首先看下 URL 和 URI 。
    URL 和 URI 的概念是不同的 ,URL 是 URI 的特例(此前 vivizhyy 一直以为的是反过来的情况,囧)。URL可以打开资源,而URI则不行。URL和URI对象可以互相转换,使用各自的toURI(),toURL()方法即可。(参见 http://dev.yesky.com/85/3001085.shtml)
然后看下这两天 vivizhyy 碰见的具体问题:当需要调用文件时,使用 Java applet 中的方法:getDocumentBase(),这个返回的值到底是什么? API 中给的解释是:Gets the URL of the document in which this applet is embedded.(用的被动语态...也就应该是嵌套着我们写的 applet 的那个网页文件)。在 netBeans IDE 6.0 中,当运行编写的 Applet 时,会自动在 build 路径下生成相应的网页文件(*.html)。那么在调用 getDocumentBase() 这个方法时,返回的就是自动生成 .html 格式文件的 URL .那么相应的多媒体文件也应当与生成的 .html 文件放在同一目录下,这样就可以正常的在页面中使用多媒体文件了。

可是当我把多媒体文件和 .html 文件放在不同的目录下,那又该如何找到多媒体文件的 URL ? 比如我的 AppletTest.html 的路径为 build/AppletTest.html , 而音频文件的目录为 build/classes/audio.au 时,想要调用 play( URL url , String name ) 方法,如何获取 URL 的 参数值?
① 把多媒体文件剪切到放置 .html 文件的目录下。-_-|||,这是最简单的解决方法,但是这样文件的目录层次会很乱。
② 写如下的代码:
 public void start() {
        String strURL = getDocumentBase().toString() + "classes";
        try {
            URL auURL = new URL(strURL);
            play(auURL, "spacemusic.au");
        } catch (Exception e) {
            e.printStackTrace();
        }
时,运行的结果是,没有正常播放声音。囧...

原文地址:https://www.cnblogs.com/vivizhyy/p/3394937.html