【问题标题】:Android FileOutputStream location save fileAndroid FileOutputStream 位置保存文件
【发布时间】:2015-03-05 07:50:18
【问题描述】:

我有一个应用程序将用户输入的数据保存到文件(内部存储)中,并在启动时加载此文件并显示内容。我想知道:在哪里可以找到我的文件 (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");

但是当我打印我的文件时,它们总是在同一行。

【问题讨论】:

  • 如何设置保存文件的新路径?

标签: android save fileoutputstream


【解决方案1】:

在哪里可以找到我的文件 (data.txt)?

您可以使用YourActivity.this.getFilesDir().getAbsolutePath()找到由openFileOutput创建的目录的路径。

但我想将“Hello”和“World”打印在两个不同的行中。

在文件中写入一个单词后使用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/mypackage 但如果我去那里是空的..也许我的设备必须植根才能看到它.. String separator = System.getProperty("line.separator" );不起作用..单词仍在同一行
  • @xXJohnRamboXx: 你确定你是从文件中读取数据然后添加新行吗?
  • @xXJohnRamboXx: 试试 :: stringBuilder.append(receiveString);stringBuilder.append("\n");
  • 我将我的 contet 文件打印到 textview 组件中,并且单词不在单独的行中
  • @xXJohnRamboXx:查看文件尝试使用 DDMS
【解决方案2】:

我想你可以在这里找到它:data/data/[your package name]/... 关于在两个单独的行中写入,只要您需要转到另一行,只需添加“\n”即可。

【讨论】:

  • 我的数据/数据是空的..我只是在每个单词之后添加了“\n”,但什么都没有:/
  • 如果你想在你的 sdcard 中写入数据,请仔细阅读本教程:chrisrisner.com/…
猜你喜欢
  • 2015-10-21
  • 1970-01-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多