Чтение значения INT из файла TXT на SD-карте Android - PullRequest
0 голосов
/ 30 декабря 2010

Итак, в этом приложении, которое я сделал, пользователь создает проект, и при сохранении количество кадров сохраняется в numberFrames.txt на SD-карте. Затем я получаю файл в другом классе. Единственное, что nFrames = 50, когда я показываю тост из nFrames на экране после запуска этого кода. Единственная инициализация 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();
        }

Я получаю файл вот так. Я понятия не имею, откуда взялась эта величина «50» для nFrames, поскольку вокруг этого нет циклов, и я точно знаю, что в конкретном сохраненном проекте всего 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 Ответ

2 голосов
/ 30 декабря 2010

Вы записываете строку, а затем читаете первый байт как целое число. 50 - это код ascii для символа «2».

Вы можете использовать BufferedReader.readLine, чтобы прочитать всю первую строку файла как строку, а затем Integer.parseInt, чтобы преобразовать это в целое число.

Кроме того, я бы более внимательно посмотрел на рабочий процесс вашего приложения. Вы не предоставляете много информации, но сохранение файла с одним целочисленным значением на SD-карте имеет определенный «запах» :). Вы смотрели на использование базы данных или, возможно, вместо этого сохранили текстовый файл в каталоге вашего приложения?

...