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,而不是 IOException
的 catch
块。
我有一个 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,而不是 IOException
的 catch
块。