2012-10-31 37 views
2

我正在嘗試編寫一個Android程序來接受輸入,然後將數據寫入到手機內部存儲器上的文件中。當我在仿真器上執行我的程序時,它會生成一個文件,就像我期望的那樣,但是當我嘗試在手機上執行它時,文件似乎並未創建。我環顧了這個網站,我似乎無法找到解決我的問題的任何地方(幾個類似的,但沒有任何工作對我來說)我希望你們能夠給我什麼我的意見做錯了。Android程序寫入模擬器,但不是電話

FileOutputStream fos = null; 
String x = "Sample String"; 
    try{ 
      fos = openFileOutput("answers.txt", MODE_PRIVATE); 
      fos.write(x.getBytes()); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     }  

    try { 
      fos.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
    } 

在模擬器上,我可以找到 「數據/數據/ com.example.helloandroid /文件/ answers.txt」 在DDMS文件。在手機上,如果我嘗試打開DDMS中的數據文件夾,它會顯示它是一個空目錄。我在這一行已經添加到我的清單:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

我似乎無法想別的,我可能做錯了。感謝您的幫助,非常感謝。

+1

除非你剷除它,你不能訪問你的手機的內部目錄。 – Wenhui

回答

0

你的代碼是好的,但像其他人所說DDMS在Eclipse中不具有內部存儲,這是在/數據/數據生命適當的訪問。您可以在http://developer.android.com/guide/topics/data/data-storage.html

一種方法找到不同類型的Android存儲的參考來獲得訪問根設備。

另一種方法是安裝一個userdebug構建。然而

最簡單的方法是通過的adb無證run-as選項。這使您可以訪問應用程序擁有的文件,即使它們位於內部存儲器中。

要驗證你有興趣正在創建的文件,在命令行輸入:

adb shell run-as com.example.helloandroid ls -l /data/data/com.example.helloandroid/files/ 

獲取特定文件的內容,輸入,也請在命令行:

adb shell run-as com.example.helloandroid cat /data/data/com.example.helloandroid/files/answers.txt 
+0

感謝您的明確答案和例子! –

0

一切是正確的與您的代碼,你看不到的文件在手機的唯一理由就是:你的手機是不是root!根據您的手機,然後使用RootExplorer(或任何其他應用程序)也看到您的結果在模擬器相同的目錄!除此之外,爲什麼不打印文本?以確保您的文件是在fos.close()添加bufferReader之後創建的,並嘗試將數據放入String中,然後將其打印出來!那麼你就可以看到結果在logcat的

相關問題