我讀&寫入用戶名&密碼到Android設備使用我的應用程序內部存儲。我成功寫入設備,但在閱讀時出現錯誤。在應用程序啓動時,我讀取該文件,並得到「應用程序(...)意外停止,請重試。」帶有「強制關閉」按鈕的,並關閉應用程序。我嘗試了不同的方式閱讀,但都顯示相同的結果。我把我的數據寫成用戶名+「\ n」+ passwrd +「\ n」。這是讀取數據的代碼:問題讀取保存的文件:Android
private static String ReadFromFile(String fileName) {
String text = "";
FileInputStream fis = null;
byte[] fileData;
try {
StringBuffer sb = new StringBuffer();
int c = 0;
fis = AppContext.openFileInput(fileName);
if (fis.available() != 0) {
fileData = new byte[fis.available()];
c = fis.read(fileData);
Log.i(TAG, "Read Byes = " + c);
java.util.StringTokenizer stk = new java.util.StringTokenizer(new String(fileData), "\n");
text = stk.toString();
} else
throw new IOException("fis.available() <= 0"); /*
c = (char)fis.read();
while (c != -1){
if (c != -1)
sb.append(c);
c = (char)fis.read();
}
text = sb.toString();
*/
fis.close();
} catch (FileNotFoundException e) {
text = "null " + e.getMessage();
} catch (IOException e) {
text = "null " + e.getMessage();
} finally {
fis = null;
}
return text;
}
/*
try {
StringBuffer sb = new StringBuffer();
RandomAccessFile raf = new RandomAccessFile(ENC_LOGIN_FILE, "r");
while ((str1 = raf.readLine()) != null){
sb.append(str1);
}
str1 = sb.toString();
} catch (FileNotFoundException e) {
errorMessage = "File Not Found: " + e.getMessage();
//e.printStackTrace();
} catch (IOException ioe) {
errorMessage = "IOExcp: " + ioe.getMessage();
//e.printStackTrace();
}*/
沒有路徑的使用和直接給出文件名寫&讀取文件。我從我嘗試過的StringTokenizer中檢出了Problem facing in reading file from Internal memory of android。
任何人都可以幫助我知道我哪裏錯了。以下權限設置:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.READ_SYNC_STATS"></uses-permission>
<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
另外我該如何調試應用程序。如何檢查在Log中寫入的數據。如果我使用SOP,它在哪裏顯示 - 它不顯示在控制檯窗口中?請幫助我,我是Android開發中的新手。 還有一件事要澄清:我的座右銘是存儲用戶名和密碼的方式,用戶不能直接讀取它們。我已經使用了MODE_PRIMITIVE。他們是否需要使用JSONObject來保存這些數據。我在幾個網站& API中看過JSON,但無法確定它應該使用的原因和位置。使用MODE_PRIMITIVE我相信即使用戶也不能讀取文件。只有我的應用程序可以讀取它。然後我不認爲我應該使用JSON。如果我錯了,請糾正我。
任何幫助,高度讚賞。
謝謝。
感謝這個信息。但通過使用SharedPreferences,我的數據或至少應用程序名稱(如果我使用MODE_PRIMITIVE)將在整個設備中看到?就像我在公司看到的演示一樣,我會看到我的應用程序名稱嗎?或者沒有人能夠看到這個名字。 – Tvd 2011-04-04 10:24:51
我試圖從「DEv Tools」中打開「Google LoginSErvice」,並且得到與我的應用程序相同的異常。從模擬器讀取文件有沒有問題?谷歌登錄alos可能會使用與我一樣的邏輯來讀取文件中的數據。我使用SDK 2.3.3 API 10仿真器。有這個想法嗎? – Tvd 2011-04-04 10:33:20
只有您的應用名稱會像其他應用一樣可見。加上而不是使用MODE_PRIMITIVE,你可以使用MODE_PRIVATE。 sharedPreferences = getPreferences(MODE_PRIVATE); – mudit 2011-04-04 10:40:31