Запись в текстовый файл в «режиме APPEND» в режиме эмулятора, - PullRequest
0 голосов
/ 01 января 2012

В моем приложении для Android я должен хранить данные от пользователя в простом текстовом файле, который я создал в директории raw. После этого я пытаюсь записать файл в APPEND MODE, используя простой код из примеров Google:

try 
{
    FileOutputStream fos = openFileOutput(FILE_NAME, Context.MODE_APPEND);
    fos.write((nameArticle+"|"+indexArticle).getBytes());
    fos.close();    
} 
catch (FileNotFoundException e) 
{               
    e.printStackTrace();
} 
catch (IOException e) 
{
    e.printStackTrace();
}

Но ничего не происходит: никаких исключений, но я ничего не вижу в своем FILE_NAME, кроме одной записи, которую я добавил.

Что я делаю не так? Можно ли вообще записать файл в эмуляторе?

1 Ответ

2 голосов
/ 01 января 2012

openFileOutput позволит вам только открыть личный файл, связанный с пакетом приложения данного контекста, для записи.Я не уверен, где находится файл, который вы пытаетесь записать.Я имею в виду полный путь.Вы можете использовать приведенный ниже код для записи в файл, расположенный в любом месте (если у вас есть разрешения).В примере используется внешнее хранилище, но вы должны иметь возможность изменить его так, чтобы оно записывалось куда угодно:

public Uri writeToExternalStoragePublic() {
    final String        filename        = mToolbar.GetTitle() + ".html"; 
    final String        packageName     = this.getPackageName();
    final String        folderpath      = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Android/data/" + packageName + "/files/";
    File                folder          = new File(folderpath);
    File                file            = null;
    FileOutputStream    fOut            = null;

    try {
        try {
            if (folder != null) {
                boolean exists = folder.exists();
                if (!exists) 
                    folder.mkdirs();                    
                file = new File(folder.toString(), filename);
                if (file != null) {
                    fOut = new FileOutputStream(file, false);
                    if (fOut != null) {
                        fOut.write(mCurrentReportHtml.getBytes());
                    }
                }
            }
        } catch (IOException e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        }
        return Uri.fromFile(file);
    } finally {
        if (fOut != null) {
            try {
                fOut.flush();
                fOut.close();
            } catch (IOException e) {
                Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }
    }
}

В приведенном вами примере попробуйте перехватить 'I0Exception`, у меня такое ощущение, что у вас его нетразрешение, где вы пытаетесь написать.

Счастливого нового года.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...