内部ストレージへのアプリケーションを使用して、Androidデバイスへのユーザー名とパスワードの読み取りと書き込みを行っています。デバイスへの書き込みは成功しましたが、読み取り中にエラーが発生します。アプリケーションの開始時にそのファイルを読み取ると、「アプリケーション(...)が予期せず停止しました。再試行してください」というメッセージが表示されます。「強制終了」ボタンでアプリを閉じます。いろいろな読み方を試しましたが、どれも同じ結果でした。ユーザー名+"\n" + passwrd +"\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>
また、アプリケーションをデバッグするにはどうすればよいですか。ログに書き込まれたデータを確認する方法。SOPを使用する場合、どこに表示されますか?コンソールウィンドウに表示されませんか?私を助けてください、私はアンドロイド開発の初心者です。もう1つ明確にすること:私のモットーは、ユーザーがユーザー名とパスワードを直接読み取れないように保存することです。私はすでにMODE_PRIMITIVEを使用しました。このデータを保存するためにJSONObjectを使用する必要がありますか。いくつかのサイトとAPIでJSONを調べましたが、JSONを使用する理由と場所がわかりませんでした。MODE_PRIMITIVEを使用すると、ユーザーでさえファイルを読み取ることができないと思います。私のアプリケーションだけがそれを読むことができます。それなら、JSONを使うべきではないと思います。私が間違っている場合は訂正してください。
どんな助けでも大歓迎です。
ありがとう。