web-dev-qa-db-ja.com

Android FileOutputStreamロケーション保存ファイル

ユーザーが入力したデータをファイル(内部ストレージ)に保存し、起動時にこのファイルを読み込んで内容を表示するアプリがあります。知りたい:ファイル(data.txt)?さらに、ファイルをロードするときに「Hello」と入力してから「World」と入力すると、「HelloWorld」が同じ行に表示されますが、「Hello」と「World」が2つの異なる行に印刷されます。

ファイルを保存する場合:

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");

しかし、ファイルを印刷するとき、それらは常に同じ行にあります。

10
xXJohnRamboXx

ファイル(data.txt)はどこにありますか?

YourActivity.this.getFilesDir().getAbsolutePath()を使用すると、openFileOutputによって作成されたディレクトリのパスを見つけることができます。

しかし、「Hello」と「World」を2つの異なる行に印刷してほしい。

使用する line.separatorファイルにWordを書き込んだ後、たとえば:

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

または、replaceAllを使用して文字列を複数の行に分割することもできます。

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

ここで見つけることができると思います:data/data/[your package name]/...そして、2つの別々の行への書き込みに関しては、別の行に移動する必要があるときはいつでも「\ n」を追加するだけです。

3