内部メモリへの読み取りと書き込みの文字列を使用しています。「 WriteFavData 」は正常に機能しています。しかし、「ReadFavData」では機能していません。実際、ReadFavData(..、..)のif(favFile.exists())の行に到達すると、ファイルが見つからないと表示され、else部分が実行されます。コマンドラインshellaccessadb shell cat /data/data/com.android.mypackage/files/fav_data_channelを使用してエミュレーターの内部メモリを既に確認しましたが、ファイルはそこにあります。ファイルが存在しないと言っているのはなぜですか。何か案は....
public boolean ReadFavData(Context context, String channelName)
{
boolean isFileFound = false;
FileInputStream fin ;
StringBuffer strContent = new StringBuffer("");
String fileName = FAV_FILE_NAME + "_" + channelName;
File favFile = new File(fileName);
int ch;
if(favFile.exists())
{
isFileFound = true;
try {
fin = context.openFileInput(FAV_FILE_NAME + "_" + channelName);
isFileFound = true;
while ((ch = fin.read()) != -1)
{
strContent.append((char) ch);
}
fin.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
{
Log.i(TAG, "not found");
}
return isFileFound;
}
public boolean WriteFavData(Context context, String channelName)
{
String favStr;
FileOutputStream fos ;
JSONObject videos = new JSONObject();
videos.put("videos", favJsonArray);
String favStr = videos.toJSONString(); //note.toString();
String fileName = FAV_FILE_NAME + "_" + channelName;
File f = new File(fileName);
if(f.exists())
{
Log.i("Old FIle", "Found");
f.delete();
}
if(f.exists())
Log.i("Still", "Exist");
try {
fos = context.openFileOutput(FAV_FILE_NAME + "_" + channelName, Context.MODE_PRIVATE);
fos.write(favStr.getBytes());
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
実際、私は再度デバッグして、if(file.exists())行でそれを追跡しましたが、ファイルは存在しません。しかし、この行にコメントしてファイルを直接読み取ると、ファイルを正常に読み取ることができません。if(file.exists())の何が問題になっていますか?