Файл не сохранен в Android - PullRequest
1 голос
/ 19 июля 2011

Я пытаюсь создать простое приложение для Android, которое сохраняет текст из формы EditText и сохраняет его во внутренней памяти. Кажется, все работает нормально (появляется сообщение «Сохранено»), за исключением случаев, когда я завершаю действие и перезапускаю его, сохраненный текст из файла не загружается вообще. Я что-то здесь упускаю?

public class ModifyInfo extends Activity{

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.edit);

    Bundle extras = getIntent().getExtras(); 
    if(extras != null){
        int dayNum = extras.getInt("day");
        String dayName = "";

        switch(dayNum){
        case 1:
            dayName = this.getString(R.string.dayMon);
            break;
        case 2:
            dayName = this.getString(R.string.dayTue);
            break;
        case 3:
            dayName = this.getString(R.string.dayWed);
            break;
        case 4:
            dayName = this.getString(R.string.dayThu);
            break;
        case 5:
            dayName = this.getString(R.string.dayFri);
            break;
        case 6:
            dayName = this.getString(R.string.daySat);
            break;
        default:
            dayName = this.getString(R.string.daySun);
            break;
        }

        final TextView dayText = (TextView) findViewById(R.id.dayName);
        final TextView editData = (TextView) findViewById(R.id.editData);
        final Button save = (Button) findViewById(R.id.buttonSave);
        final Button clear = (Button) findViewById(R.id.buttonClear);
        final String Day = dayName;

        dayText.setText(dayName);

        clear.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                editData.setText("");
            }
        });

        save.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                String FILEOUTPUT = Day + ".txt";

                try {
                    String string = editData.getText().toString();

                    FileOutputStream fos = openFileOutput(FILEOUTPUT, Context.MODE_PRIVATE);
                    fos.write(string.getBytes());
                    fos.close();

                    Toast.makeText(ModifyInfo.this, "Saved", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    Toast.makeText(ModifyInfo.this, "Save error", Toast.LENGTH_SHORT).show();   
                }
            }
        });

        File FILEINPUT = new File(Day + ".txt");

        try {
            BufferedReader bfr = new BufferedReader(new FileReader(FILEINPUT));
            String line;

            while ((line = bfr.readLine()) != null)
            {
                editData.setText(line);
            }

            bfr.close();

        } catch (Exception e) {
            editData.setText("");
        }   
    }   
}

}

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Возможно, вы читаете \ n или такие пробелы из последней строки файла, так как вы вызываете editData.setText (line); , который сбрасывает текст в текущую строку. Или вы также можете испытывать исключение, в этом случае вы обрабатываете это исключение, очищая editText.

Вместо этого должно быть так:

try {
        BufferedReader bfr = new BufferedReader(new FileReader(FILEINPUT));
        String line;
        String fullText = "";

        while ((line = bfr.readLine()) != null)
        {
            fullText += line;
        }

        bfr.close();

        editData.setText(fullText);

    } catch (Exception e) {
        editData.setText("");
    }   

Согласно вашим разъяснениям, вы должны проверить, правильно ли вы открыли свой файл, как указано в: http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

Чтобы прочитать файл из внутреннего хранилища:

1. Call openFileInput() and pass it the name of the file to read. This returns a FileInputStream.
2. Read bytes from the file with read().
3. Then close the stream with close().

Вы пытаетесь открыть, используя BufferedReader.

0 голосов
/ 19 июля 2011

Возможно, что Android блокирует файлы из некоторых папок, и вы не можете их изменять. Вы можете использовать общие предпочтения или статические объекты.

...