Сохранение файлов не всегда работает на Android - PullRequest
0 голосов
/ 03 апреля 2012

Итак, что началось как проблема с кнопками, просто означает, что есть проблема с моими файлами. Я хочу сохранить номера в мои файлы, а также выбрать язык. Язык работает отлично, но когда я пытаюсь сделать то же самое с моими номерами, он просто идет не так

Итак, это код моего languege файла

french.setOnClickListener(new View.OnClickListener() {  
        public void onClick(View v) {
            try{
                buttonSound.start();
                String FILENAME = "LangFile";
                String data ="FR";
                FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
                fos.write(data.getBytes());
                fos.close();
                FILENAME="TempFile";
                data="0";
                FileOutputStream fostemp = openFileOutput(FILENAME, Context.MODE_PRIVATE);
                fostemp.write(data.getBytes());
                fostemp.close();
                startActivity(new Intent("com.technopolisapp.LOGOTECHNOPOLIS"));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            finally{
                finish();
            }               
        }
    }); 

Здесь я сохраняю 2 буквы для нажатой кнопки И это код, который читает его снова и делает A кнопками с выбранным языком

try{
        String FILENAME = "LangFile";
        FileInputStream fos = openFileInput(FILENAME);
        byte[] b = new byte[2];
        fos.read(b);
        fos.close();
        if(new String(b).equalsIgnoreCase("NL")){
            Tower.setText(classNamesDutch[0]);
            Puzzle.setText(classNamesDutch[1]);
            Mirror.setText(classNamesDutch[2]);
            Tangram.setText(classNamesDutch[3]);
            Frog.setText(classNamesDutch[4]);
        }
        if(new String(b).equalsIgnoreCase("GB")){
            Tower.setText(classNamesEnglish[0]);
            Puzzle.setText(classNamesEnglish[1]);
            Mirror.setText(classNamesEnglish[2]);
            Tangram.setText(classNamesEnglish[3]);
            Frog.setText(classNamesEnglish[4]);
        }
        if(new String(b).equalsIgnoreCase("FR")){
            Tower.setText(classNamesFrench[0]);
            Puzzle.setText(classNamesFrench[1]);
            Mirror.setText(classNamesFrench[2]);
            Tangram.setText(classNamesFrench[3]);
            Frog.setText(classNamesFrench[4]);
        }
    }catch (java.io.FileNotFoundException e) {
      } catch (IOException e) {
        e.printStackTrace();
    }

Теперь это мой код для сохранения и чтения моих чисел

public void Savefile(){
    int level=0;
    String data;
    try{
        String FILENAME = "TowerFile";
        FileInputStream fos = openFileInput(FILENAME);
        byte[] b = new byte[1];
        fos.read(b);
        fos.close();            
        if(new String(b).equalsIgnoreCase("1")){
            level=1;
        }
        if(new String(b).equalsIgnoreCase("2")){
            level=2;
        }
        if(new String(b).equalsIgnoreCase("3")){
            level=3;
        }
        if(new String(b).equalsIgnoreCase("4")){
            level=4;
        }
        if(new String(b).equalsIgnoreCase("5")){
            level=5;
        }
        if(level!=1 || level!=2 || level!=3 || level!=4 || level!=5){
            FILENAME="TowerFile";
            data="een";
            FileOutputStream fostemp = openFileOutput(FILENAME, Context.MODE_PRIVATE);
            fostemp.write(data.getBytes());
            fostemp.close();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

И вот как я хочу это прочитать

try{
        String FILENAME = "TowerFile";
        FileInputStream fos = openFileInput(FILENAME);
        byte[] b = new byte[1];
        fos.read(b);
        fos.close();
        if(new String(b).equalsIgnoreCase("1")){
            button1.setVisibility(Button.GONE);
        }
        if(new String(b).equalsIgnoreCase("2")){
            level=2;
        }
        if(new String(b).equalsIgnoreCase("3")){
            level=3;
        }
        if(new String(b).equalsIgnoreCase("4")){
            level=4;
        }
        if(new String(b).equalsIgnoreCase("5")){
            level=5;
        }
    }catch (java.io.FileNotFoundException e) {
    } catch (IOException e) {
            e.printStackTrace();
    }

Так что я на самом деле не понимаю, где это идет не так в данный момент

1 Ответ

0 голосов
/ 03 апреля 2012

Вы хотите использовать Context.openFileStream (Context.MODE_PRIVATE) . Это не объясняет, почему вы должны делать это таким образом, я предполагаю разрешения ОС, но это должно работать для вас.

...