我在中保存了一个文件.properties this.getFilesDir() + "Data.propertie"
. 在应用程序中,我保存用户编写的数据,但当我打开应用程序时,我上次保存的所有数据(或文件)都已被删除。
例子:
// Store
for (Map.Entry<String,String> entry : MainActivity.Notes.entrySet()) { // Put all data from Notes in properties to store later
properties.put(entry.getKey(), entry.getValue());
}
try { properties.store(new FileOutputStream(this.getFilesDir() + "data.properties"), null); } // Store the data
catch (IOException e) { e.printStackTrace(); } // Error exception
// Load the map
Properties properties = new Properties(); // Crate properties object to store the data
try {
properties.load(new FileInputStream(this.getFilesDir() + "data.proprties")); } // Try to load the map from the file
catch (IOException e) { e.printStackTrace(); } // Error exception
for (String key : properties.stringPropertyNames()) {
Notes.put(key, properties.get(key).toString()); // Put all data from properties in the Notes map
}
// Can load the data
你可以看到我保存了文件中的数据,我可以加载它,但当我打开应用程序,数据已被删除
有没有一种方法可以写入文件并保存我下次打开应用程序时写入的数据?
1条答案
按热度按时间tpgth1q71#
首先
Context.getFilesDir
返回一个File
对象。这个File
表示应用程序的专用数据目录。那你就是了
getFilesDir() + "foo"
会隐式调用toString()
上File
示例。File.toString()
相当于File.getPath
它不一定返回尾部斜杠。这意味着,如果
getFilesDir()
返回一个File
在/data/app
,您的属性文件将变为/data/appdata.properties
它不在数据文件夹中,无法写入。取而代之的是
File
在一个目录中,您可以创建一个新的File
该目录的示例。例如:这样可以确保属性文件位于该目录中,并防止文件分隔符出现任何问题