0

我有一个通过网页记录声音的 Java 小程序。保存在磁盘上的操作是由一个内部类进行的,它是一个线程:

class saveThread extends Thread {

public void run() {
    AudioFileFormat.Type fileType = AudioFileFormat.Type.WAVE;
    FileDialog fd = new FileDialog(new Frame(), "Save as WAVE", FileDialog.SAVE);
    fd.setFile("*.wav");
    fd.setVisible(true);
    String name = fd.getDirectory() + fd.getFile();
    File file = new File(name);

    try {
        byte audio[] = out.toByteArray();
        InputStream input = new ByteArrayInputStream(audio);
        final AudioFormat format = getFormat();
        final AudioInputStream ais = new AudioInputStream(input, format, audio.length / format.getFrameSize());
        AudioSystem.write(ais, fileType, file);
     } catch (Exception e) {
         e.printStackTrace();
     }
 }
}//End of inner class saveThread

问题是当我在网页中执行小程序时,保存在磁盘上的操作不起作用。但是当我直接执行小程序时,它就像一个魅力,这就是为什么我认为问题可能是浏览器不支持小程序线程。

4

1 回答 1

2

JAVA Applet 确实支持多线程。但是,请检查您的小程序是特权还是沙盒。来自java applet 文档页面

建议您使用 Java 网络启动协议 (JNLP) 启动您的小程序,以利用扩展功能并改善用户体验。有关小程序部署的分步说明,请参阅部署小程序。

并且当使用 JNLP 启动时,沙盒小程序还可以执行以下操作:

  1. 他们可以在客户端上打开、读取和保存文件。
  2. 他们可以访问共享的系统范围的剪贴板。
  3. 他们可以访问打印功能。
  4. 他们可以在客户端上存储数据,决定应如何下载和缓存小程序,等等。
于 2013-09-29T18:06:10.087 回答