我正在使用我的应用程序将用户名和密码读写到 android 设备到内部存储。我成功写入设备,但在阅读时出现错误。在应用程序开始时,我读取了该文件并得到“应用程序(...)已意外停止。请再试一次。” 使用“强制关闭”按钮并关闭应用程序。我尝试了不同的阅读方式,但都显示了相同的结果。我将我的数据写为用户名+“\n”+密码+“\n”。这是读取数据的代码:
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的 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。如果我错了,请纠正我。
非常感谢任何帮助。
谢谢。