我想在我的应用内创建一个文件夹。在文件夹中,我想创建一个文件(比如 recents ),其中应用程序将在每次启动时逐行写入数据。
private void saveForRecents(String phoneNumber) {
//Need to open File and write the phonenumbers that has been passed into it
try{
File mydir = getDir("recents", 0);
//Creating an internal dir;
File fileWithinMyDir = new File(mydir, "recents");
//Getting a file within the dir.
FileWriter fw = new FileWriter(fileWithinMyDir.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(phoneNumber);
bw.newLine();
bw.flush();
bw.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Failed to write into the file", Toast.LENGTH_LONG).show();
}
}
如何访问目录 mydir 中的 recents 文件的内容?我想逐行访问数据,因为我逐行写入数据。如果有人花时间向我解释如何去做,我真的很感激,因为我需要学习它。如果我做错了,请告诉我。
答案 0 :(得分:0)
根据您的工作,我认为使用SharedPreferences是一种更好的方法。它不会被其他人覆盖,并且它隐藏在文件浏览器中乱搞的人。这是一个快速示例,假设您的某些阵列中有最近的电话号码。当然,其他方法也是可能的。
SharedPreferences Prefs = getSharedPreferences("RecentPhoneNumbers", MODE_PRIVATE);
Editor e = Prefs.edit();
e.clear();
for (String s : RecentPhoneArray)
{
e.putString(s);
}
e.commit();
然后在下次应用程序启动或需要重新加载时加载它们:
SharedPreferences Prefs = getSharedPreferences("RecentPhoneNumbers", MODE_PRIVATE);
for (Map.Entry<String, ?> entry : Prefs.getAll().entrySet())
{
String s = entry.getValue().toString();
RecentPhoneArray.add(s);
}
答案 1 :(得分:0)
很长一段时间后,我想出了问题的第二部分。如果遇到同样的问题,这对其他用户可能会有用。
制作自定义目录(此处为 recents )和自定义文件(此处最近)
try
{
File mydir = getDir("recents", 0);
File fileWithinMyDir = new File(mydir, "recent");
//true here lets the data to be added in the same file in the next line
// No value at all or a false will overwrite the file
FileWriter fw = new FileWriter(fileWithinMyDir.getAbsoluteFile(), true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("Anything you want to write");
bw.newLine();
bw.flush();
bw.close();
}catch(Exception e){
Toast.makeText(getApplicationContext(), "Failed to write into the file", Toast.LENGTH_LONG).show();
}
以下代码有助于在同一目录中读取相同的文件(此处为 recent )(此处为 recents )
try
{
File mydir = this.getDir("recents", 0);
File fileWithinMyDir = new File(mydir, "recent");
try
{
// open the file for reading
InputStream instream = new FileInputStream(fileWithinMyDir);
if (instream != null)
{
// prepare the file for reading
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
while ((line = buffreader.readLine())!= null)
{
// do something with the line
}
instream.close();
}
}
catch (Exception ex)
{
// print stack trace.
}
finally
{
// close the file.
}
}
catch(Exception e)
{
e.printStackTrace();
}
需要注意的一件重要事情是,如果目录 重新 此处并且文件在其中 最近 此处不存在,然后会在第一次运行时自动创建。从第二轮开始,它将开始引用它,而不是再次重新创建整个事物......
希望这会对某些用户有所帮助