Android FileOutputStream расположение сохранить файл

у меня есть приложение, которое сохраняет в файл (внутреннее хранилище) ввод данных пользователем и при запуске загружает этот файл и показывает содержимое. Я хотел бы знать: где я могу найти свой файл (data.txt)? Кроме того, если я ввожу "Hello", а затем "World" При загрузке файла, я вижу "HelloWorld" в той же строке, но я хочу, чтобы "Hello" и "World" печатались на двух разных строках.

для сохранения файла:

public void writeToFile(String data) {
    try {
        FileOutputStream fou = openFileOutput("data.txt", MODE_APPEND);
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fou);
        outputStreamWriter.write(data);
        outputStreamWriter.close();
    }
    catch (IOException e) {
        Log.e("Exception", "File write failed: " + e.toString());
    }
}

для загрузки файл:

public String readFromFile() {

    String ret = "";

    try {
        InputStream inputStream = openFileInput("data.txt");

        if ( inputStream != null ) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ( (receiveString = bufferedReader.readLine()) != null ) {
                stringBuilder.append(receiveString);
            }

            inputStream.close();
            ret = stringBuilder.toString();
        }

    }
    catch (FileNotFoundException e) {
        Log.e("login activity", "File not found: " + e.toString());
    } catch (IOException e) {
        Log.e("login activity", "Can not read file: " + e.toString());
    }

    return ret;
}

спасибо.

[обновление]

я вставил "n " после каждого ввода:

user = (EditText) v.findViewById(R.id.username);
writeToFile(user.getText().toString() + "n");

но когда я печатаю свой файл, они всегда находятся в одной строке.

2 ответов


где я могу найти свой файл (данные.txt)?

вы можете найти путь к каталогу, в котором создается openFileOutput, С помощью YourActivity.this.getFilesDir().getAbsolutePath().

но я хочу, чтобы "привет" и " мир " печатались в двух разных строках.

использовать line.separator после записи слова в файл, например:

String separator = System.getProperty("line.separator");
outputStreamWriter.write(data);
outputStreamWriter.append(separator);
...

или вы также можете использовать replaceAll разбить строку на несколько строк:

String separator = System.getProperty("line.separator");
data=data.replaceAll(" ",separator);

Я думаю, вы можете найти его здесь: data / data / [имя вашего пакета]/... и что касается написания в двух отдельных строках, просто добавьте "\n", когда вам нужно перейти к другой строке.