2012-06-29 35 views
0

具體而言,我試圖從SharePoint打開一個文件,但它實際上只是一個網站,我有適當的訪問權限,因此'不是問題。我試圖在java中使用桌面API來打開它,但它給了我一個錯誤消息「文件不存在!」桌面只能在本地使用嗎?如果它對網站有效,我做錯了什麼?從java中的一個網站打開一個文件

基於stephen c建議的新代碼,它仍然不起作用。我錯過了什麼?

public class ParseURL { 
     public static void main(String[] args) throws Exception { 
      try { 
      URL url = new URL("http://wss/is/sites/itsd/network/Remote%20Access/Soft%20Tokens/Your%20new%20RSA%20Soft%20Token%20for%20Android%20-%20INC%20XXXXXXX.oft"); 
      InputStream is = url.openStream(); 
      is.close(); 
      } catch(IOException err) { 
       } 
     } 
    } 

舊代碼

public static void main(){ 

     try { 

      File oftFile = new File("http://wss/is/sites/itsd/network/Remote%20Access/Soft%20Tokens/Your%20new%20RSA%20Soft%20Token%20for%20Android%20-%20INC%20XXXXXXX.oft 
"); 
      if (oftFile.exists()) { 

       if (Desktop.isDesktopSupported()) { 
        Desktop.getDesktop().open(oftFile); 
       } else { 
        System.out.println("Awt Desktop is not supported!"); 
       } 

      } else { 
       System.out.println("File does not exist!"); 
      } 

      System.out.println("Done"); 

      } catch (Exception ex) { 
      ex.printStackTrace(); 
      } 
    } 
    } 

回答

1

嘗試使用HttpURLConnection

這是一個網址,您需要連接到網址並從連接中讀取流中的內容。

Usage這裏

+0

所以你可以告訴我一個如何在代碼中使用它的例子! – jerhynsoen

+0

@ jerhynsoen - 請參閱我的答案,以獲得將解釋這一切的教程鏈接。 –

+0

看起來,真的很複雜...... – jerhynsoen

0

File類用於表示生活在本地/本地掛載的文件系統上的文件的名稱/路徑。你給它一個URL,這不是一個文件或路徑名。

你應該使用URLURI類,並試圖通過打開的連接讀它...

寧可給你盆栽例子剪切和粘貼,我建議你讀牛逼he relevant parts of the Java Tutorials


,所以我讀的教程,但怎麼會打開從URL文件?這不僅僅是我正在嘗試讀取數據,但我想在Outlook中打開常用文件。

啊......所以「打開」你的意思是「用文件查看器啓動一個單獨的窗口」。

在這種情況下,您的代碼是正確的方法,但不能使用File.exists()來測試URL是否存在。如果您擁有的只是一個「http:」,則需要按照本教程中的示例代碼使用URL.openStream()來打開文件,並將異常解釋爲告訴文件是否存在。 (HTTP 404響應變爲FileNotFoundException,但其他IOException也是可能的。)不要忘記close()流或您的代碼將泄漏文件描述符。

事實上,您可能最好不要試圖測試URL是否存在。只是試圖「打開」它並診斷異常。

+0

所以我看了教程,但如何從URL打開一個文件?這不僅僅是我正在嘗試讀取數據,但我想在Outlook中打開常用文件。 – jerhynsoen

+0

@ jerhynsoen:如果你想打開文件,你需要在連接頭中設置內容類型。這應該使它工作。 – Nrj

+0

@nrj,小心向我展示一個如何在我的程序中執行此操作的示例? – jerhynsoen

相關問題