有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我应该将缓冲流链接到输入流,还是在将声音库作为嵌入式资源加载时使用URL类?

我已经编写了一个程序,它加载到一个声音库中,可以压缩为一个JAR文件,声音库文件嵌入在JAR中并可以从JAR中访问

为了澄清,下面的代码行属于用于设置MIDI音序器的方法。这里的要求是使用soundbank类加载soundbank文件(默认的MIDI soundbank除外),然后可以使用该类设置MIDI合成器

在研究将soundbank文件作为嵌入式资源加载的方法时,我遇到了两种似乎有效的方法(为了清晰起见,我省略了try/catch语句):

方法1

 InputStream is = getClass().getResourceAsStream("/soundbank.sf2");
 InputStream sb = new BufferedInputStream(is);

方法2

 URL sb = getClass().getResource("/soundbank.sf2");

在仔细阅读了源代码之后,这两种方法似乎非常相似,在这个级别上它们可能很难区分。我发现甲骨文的解释非常有用


自从发布后,我发现我也可以使用以下方法(尽管这样写似乎是相当多余的,因为方法1的第一件事就是尝试这种方法。我想可能会节省一两纳秒的时间…)

 InputStream is = ClassLoader.getSystemResourceAsStream("/soundbank.sf2");
 InputStream sb = new BufferedInputStream(is);

很明显,这种方法不适合用于基于web的应用程序,但这不适用于本问题中概述的情况


共 (0) 个答案