-1

アプリ内からフォルダーを作成したい。フォルダー内に、アプリが起動のたびにデータを 1 行ずつ書き込み続けるファイル (たとえばrecents ) を 1 つだけ作成します。

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内にある最近のファイルの内容にアクセスするにはどうすればよいですか? そして、データを1行ずつ書いているので、1行ずつデータにアクセスしたいと思います。私はそれを学ぶ必要があるので、誰かが私にそれを行う方法を説明するために時間を割いてくれたら本当に感謝しています. また、私が何か間違ったことをしている場合はお知らせください。

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

長い間、私は自分の問題の 2 番目の部分を理解しました。これは、他のユーザーが同じ問題に遭遇した場合に役立つ可能性があります。

カスタム ディレクトリ (ここでは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();
}

注意すべき重要な点の 1 つは、ディレクトリここにあり、その中のファイルがここにある場合、最初の実行時に自動的に作成されることです2回目の実行から、全体を再作成するのではなく、それを参照し始めます...

これが一部のユーザーに役立つことを願っています

于 2013-03-05T05:10:53.633 に答える