从SD卡android上的txt文件中读取int值

时间:2010-12-30 02:29:58

标签: android file int sd-card

所以在我做的这个应用程序中,用户创建了一个项目,当他们保存时,帧数被保存到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();
    }

1 个答案:

答案 0 :(得分:2)

您正在写出一个字符串,然后将第一个字节作为整数读取。 50是'2'字符的ascii代码。

您可以使用BufferedReader.readLine以String形式读取文件的整个第一行,然后使用Integer.parseInt将其转换为整数。

另外,我会仔细研究一下您的应用程序的工作流程。您没有提供太多信息,但将具有单个整数值的文件保存到SD卡有一定的“气味”:)。您是否考虑过使用数据库,或者将文本文件存储在应用程序的目录中?