Android 应用写入文件,似乎在 activity 完成后被删除

Android app writes to file and seems to be deleted when activity is finished

我有一个 android 应用程序正在将值写入该应用程序还创建的文件。我能够写入文件,然后再次从文件中读取。但是,一旦 activity 完成,文件似乎就消失了,或者丢失了它的值。

我知道您无法通过资源管理器浏览文件,除非您将 phone and/or 运行 adb 服务器设为特定用户。

这是我写入文件的代码: public无效保存价格(视图视图){ FileOutputStream outputStream;

        File getFilesDir = this.getFilesDir();
        File filePathOne = new File(getFilesDir, filename);
        try {
            outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
            for (int i = 0; i < priceArray.length; i++) {
                outputStream.write(String.format("%.2f\n", priceArray[i]).getBytes());
            }

            Toast.makeText(this, "Prices saved successfully!", Toast.LENGTH_SHORT).show();
            outputStream.close();
            } catch (Exception e) {
            e.printStackTrace();
        }

这是我读取文件的代码:

public void loadPrices(View view) {
        int i = 0;
        final InputStream file;
        BufferedReader reader;
        try{
            file = getAssets().open(filename);
            reader = new BufferedReader(new InputStreamReader(file));
            String line = reader.readLine();
            while(line != null){
                line = reader.readLine();
                priceArray[i] = Double.parseDouble(line);
                i++;
            }
        } catch(IOException ioe){
        ioe.printStackTrace();

        hamburgerPriceText.setText(String.format("%.2f", priceArray[0]));
        hotDogPriceText.setText(String.format("%.2f", priceArray[1]));
        chipsPriceText.setText(String.format("%.2f", priceArray[2]));
        beerPriceText.setText(String.format("%.2f", priceArray[3]));
        popPriceText.setText(String.format("%.2f", priceArray[4]));

        Toast.makeText(this, "Prices loaded successfully!", Toast.LENGTH_SHORT).show();

        }catch (NumberFormatException e) {
            Log.e("Load File", "Could not parse file data: " + e.toString());
        }
    }

在我调用设置数组中的值并将值保存到文件的保存方法后,我 运行 一个清除 activity 字段和中的所有值的清除方法阵列。因此,当我 运行 读取方法并填充 activity 上的字段时,我知道这些值来自读取文件。这是我知道我正在成功保存和读取文件的唯一方法。

我的问题是如何让它永久化?如果我关闭保存值的 activity 然后立即 运行 读取方法,所有值都是 0.

有什么我想念的吗?如何写入文件,以便在 activity 关闭或应用程序完全关闭时,我仍然可以保留这些值?

Here is my code that reads the file:

该代码中没有任何读取文件的内容。它正在从您的应用程序资产中读取一些内容。此外,出于某种原因,它只会在出现异常时更新 UI。

So when I run the read method and it populates the fields on the activity, I know the values are coming from reading the file.

不,它们来自您应用的资产,如果您有 IOException,您只需要填充这些字段。

My question is how do I make it permanent?

步骤#1:实际从文件中读取。由于您正在使用 openFileOutput() 写入文件,因此请使用 openFileInput() 从文件读取。

第 2 步:当您成功读入数据时更新 UI,而不是 IOExceptioncatch 块。