2013-09-29 69 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 !!謝謝 ! –