-1

我想从我的应用程序内部创建一个文件夹。在文件夹中,我只想创建一个文件(比如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中的最新文件的内容?我想在逐行写入数据时逐行访问数据。如果有人花时间向我解释如何做,我将非常感激,因为我需要学习它。如果我做错了什么,请告诉我。

4

2 回答 2

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);
}
于 2013-03-04T20:18:29.390 回答
0

很长一段时间后,我发现了问题的第二部分。如果其他用户遇到相同的问题,这可能对他们有用。

用于制作自定义目录(此处为recents)和自定义文件(此处为recent

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();
}

以下代码有助于读取同一目录(此处为recents )内的相同文件(此处为recent

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();
}

需要注意的重要一点是,如果一个目录最近在此处并且其中的文件最近在此处不存在,那么它将在第一次运行时自动创建。从第二次运行开始,它将开始引用它,而不是重新创建整个事物......

希望对部分用户有所帮助

于 2013-03-05T05:10:53.633 回答