所以在我做的这个应用程序中,用户创建了一个项目,当他们保存时,帧数被保存到SD卡上的numberFrames.txt。然后我在另一个类中检索文件。当我运行此代码后,当我向屏幕显示nFrames的吐司时,唯一的事情是nFrames = 50。我所做的nFrames的唯一初始化是在这个代码的正上方为零,该代码位于onCreate()中。
File sdcardLocal = Environment.getExternalStorageDirectory();
File dir = new File (sdcardLocal.getAbsolutePath() + "/Flipbook/"+customizeDialog.getTitle()+"/");
dir.mkdirs();
File fileNum = new File(dir, "numberFrames.txt");
FileWriter myFileWriter = null;
try {
myFileWriter = new FileWriter(fileNum);
} catch (IOException e) {
e.printStackTrace();
}
BufferedWriter out = new BufferedWriter(myFileWriter);
try {
String text = bitmaps.size()+"";
out.write(text);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
我像这样检索文件。我不知道nFrame的这个“50”值来自哪里,因为周围没有循环,我确信保存的特定项目只有3帧。这是为什么?
FileInputStream is = null;
BufferedInputStream bis = null;
try {
is = new FileInputStream(new File(mFolderDialog.getPath()+"/numberFrames.txt"));
bis = new BufferedInputStream(is);
nFrames = bis.read();
}catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:2)
您正在写出一个字符串,然后将第一个字节作为整数读取。 50是'2'字符的ascii代码。
您可以使用BufferedReader.readLine以String形式读取文件的整个第一行,然后使用Integer.parseInt将其转换为整数。
另外,我会仔细研究一下您的应用程序的工作流程。您没有提供太多信息,但将具有单个整数值的文件保存到SD卡有一定的“气味”:)。您是否考虑过使用数据库,或者将文本文件存储在应用程序的目录中?