2013-09-29 60 views
0

我有一个通过网页记录声音的Java Applet。 保存,磁盘上的操作是通过一个内部类是主题进行:浏览器是否支持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 

的问题是对磁盘操作保存不工作,当我在一个网页执行的小程序。但是当我直接执行applet时,它就像一个魅力,所以我认为可能问题是浏览器不支持applet线程。

+0

_问题是当我在网页中执行小程序时磁盘操作保存不起作用._这可能意味着您的小程序没有写入磁盘的权限。 – BackSlash

+0

怎么样?你能解释更多吗? –

+0

如果您的applet是从不可信来源(如JavaScript)调用的,则可以使用[访问控制器](http://docs.oracle.com/javase/6/docs/api/java/security/AccessController.html)。 – Yann39

回答

2

JAVA Applet支持多线程。但是,请检查您的小程序是否处于特权或沙箱。从java applet documentation page

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

并且当使用JNLP推出,沙箱的小程序还可以执行以下操作:

  1. 他们可以打开,阅读,并保存在客户端上的文件。
  2. 他们可以访问共享系统范围的剪贴板。
  3. 他们可以访问打印功能。
  4. 他们可以将数据存储在客户端上,决定如何下载和缓存小应用程序,以及更多。
+0

Bravo !!谢谢 ! –