2011-07-20 43 views
0

我正在嘗試開發一個小應用程序,在這裏我得到了一個JSON文件,並且必須從中提取數據。據我所知,一個JSON對象接受一個字符串參數,因此我試圖訪問一個文件並將其中的數據寫入一個字符串。 我把這個文件放在一個「JSON文件」文件夾中,當我嘗試讀取文件時,它會拋出一個文件未找到的異常。 我試過幾種方法找到該文件的路徑,但每次嘗試都是徒勞的。 這可能是我提取的路徑錯誤,或者可能是其他內容,請幫助我。 在此先感謝。 這裏是尋找路徑的代碼:查找/閱讀文件時發現問題

try 
      { 
        path = Environment.getRootDirectory().getCanonicalPath(); 
      } 
      catch (IOException e) 
      { 
        e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. 
      } 

      File jFile = new File(path + /"JSON file/gallery.json"); 

這裏是從文件讀取的代碼:我想從文件中取數據,以 :

String str =""; 
      try 
      { 
        BufferedReader in = new BufferedReader(new FileReader(jFile)); 
        while ((str += in.readLine()) != null) 
        { 
        } 
      in.close(); 
      } 
      catch (IOException e) 
      { 
        e.getMessage(); 
      } 
      return str; 

這裏更多的規格要做到這一點:JSONObject(jString)。 當我提取json文件的路徑時,我創建了一個包含路徑的文件,並將它傳遞給從文件讀取的函數,並在那裏嘗試讀取文件時會拋出一個找不到的文件異常。 該文件確實存在於該文件夾中(甚至在視覺上 - 我試圖附加圖像,但該網站不會讓我,因爲我是新用戶) 我試圖通過Windows地址欄打開文件通過輸入如下路徑: C:\ Users \ Marat \ IdeaProjects \ MyTask \ JSON file \ gallery.json並打開它。

回答

0

文件夾,您可以通過使用

InputStream is = context.getResources().getAssets().open("sample.json"); 

訪問它,那麼你可以將其轉換爲String

public static String inputStreamAsString(InputStream stream) 
    throws IOException { 
    BufferedReader br = new BufferedReader(new InputStreamReader(stream)); 
    StringBuilder sb = new StringBuilder(); 
    String line = null; 
    while ((line = br.readLine()) != null) { 
     sb.append(line + "\n"); 
    } 
    br.close(); 
    return sb.toString(); 
} 
+0

如何從中獲取字符串? – user854787

+0

我添加了一個方法來將輸入流轉換爲字符串 –

+0

對於愚蠢的問題(我使用android大約10個小時,我是一個新手),我感到抱歉,但是因爲您已經使用了一個實例,所以我必須添加Context上下文,但它必須被初始化,我該如何初始化它? – user854787

0

編輯

你需要把文件中的設備,如果是您的計算機上,它不是來自你的設備訪問。有一些方法可以做到這一點,其中之一是將其放入應用程序的res/dir目錄中。請參閱documentation以瞭解如何做到這一點。


調試它。我很確定它會很容易找到。首先,尋找以下內容:

  1. 在創建文件之前打印路徑,例如Log.d("SomeTag", path + "/JSON file/gallery.json")

  2. 觀察完整的例外細節。也許還有另一個問題。

  3. 瀏覽的文件夾和查看文件是否存在(月食:窗口 - >顯示視圖 - >其他 - > Android的 - >文件瀏覽器

你可能會注意到這個問題,並能如果沒有,請在這裏發佈一個包含這些試驗結果的更多細節問題

順便說一句,GetgetRootDirectory()返回android的根目錄,這不是你想要的(你沒有RW權限)你可能想要得到applcation目錄,你可以看到如何得到它here, in the question I asked a few month ago但是因爲你d沒有給我們這些細節,這將很難幫助你。

,如果你把它存儲在資產
+0

好吧,日誌的結果:/系統/ JSON文件/ gallery.json – user854787

+0

請在我們被拖入無盡的評論主題之前,嘗試查找所有提及的內容,然後以對我們有幫助的方式編輯您的問題。編輯 – MByD

+0

,我希望我提到所有。 BTW的例外是:java.io.FileNotFoundException:/系統/ JSON文件/ gallery.json – user854787