2012-01-11 83 views
0

我願意做一個簡單的應用程序,根據這個entry將數據存儲在文本文件中,但我面臨一個令人沮喪的例外。BlackBerry:將文件保存到文本文件

這是我的代碼:

private boolean saveFile(String fileName, String fileContent) { 
     DataOutputStream os = null; 
      FileConnection fconn = null; 
     try { 
     fconn = (FileConnection)Connector.open(fileName,Connector.READ_WRITE); 
      if (!fconn.exists()) 
       fconn.create(); 
     os=fconn.openDataOutputStream(); 
     String myString=fileContent; 
     os.write(myString.getBytes()); 
     os.close(); 
     fconn.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      Dialog.alert(e.toString()); 
      return false; 
     } 
     return true; 
    } 

private String getFileName() { 

     return "file:///SDCard/BlackBerry/documents/text.dat"; 

    } 

這是例外,我得到:

net.rim.device.api.io.file.FileIOException: File system error 

的API說以下內容:

IOException - if the firewall disallows a connection that is not btspp or comm. 

,我不知道可能有用或沒有。

我正在使用BlackBerry JRE 4.6.1和BlackBerry 8900 Simulator。 希望你們能幫助我。

+0

哪一行是拋出異常?寫? – Tamar 2012-01-11 22:51:50

+0

調試時發現'fileName'的值是什麼? – Rupak 2012-01-12 06:09:03

+0

您的要求是保存文本文件,但在您提供「filename.dat」的getFileName()方法中。對於文本文件,它應該是「fileName.txt」。你有什麼例外? – alishaik786 2012-01-12 06:19:16

回答

1

檢查您的模擬器是否安裝了SDCard。 如果你是自動啓動,你必須等待,直到系統完全啓動並裝入SD卡:example

最後 - 你必須在失敗操作結束時關閉流和文件連接。

+0

謝謝。你的回答是一個很好的提示。 – Jorge 2012-01-12 13:54:02

1

好的,答案很棘手。我一直使用相同的代碼,一遍又一遍地嘗試,直到我開始認爲這是關係到模擬器所以我所做的是一個問題,運行應用程序之前,我刪除插入使用Options項目的SD卡從黑莓界面菜單,就是這樣。它像魅力一樣工作。我想這是模擬器中的一個錯誤。

+0

你的程序是多線程的嗎?可能是因爲您試圖同時將數據保存在同一個文件中?檢查另一個JRE或另一個模擬器。作爲可能性列表的最後一個選項,我會責備模擬器問題。 – 2012-01-12 19:33:53