0

テキストファイルの作成と編集に問題があります。ファイルにデータが保存されているようには見えません。

  • テキストファイルが利用できない場合は、作成する必要があります。
  • ファイルにデータがある場合は、そのデータを読み取って利用できるようにします。
  • 保存されるデータは、String次のように区切られた3つの整数値で構成されます,String finalWrite = "3,5,1"
  • したがって、この文字列を分割し、新しいカウンターを追加できるように整数に変換する必要があります。
  • これらの新しいカウンターは、デバイスに保存されているテキストファイルに書き込む必要があります

エラーは発生せず、強制終了もありません。

Logcatを使用して、値が正しく保存されていないことを確認することしかできませんでした。

Android開発サイトのドキュメントを確認しました。誰かが私を助けたり、正しい方向に向けたりすることができれば、それは大いにありがたいです!

私が使用しているwriteメソッド:

public void WriteItIn() throws IOException
{
    FileOutputStream fOut = openFileOutput("stats.txt", Context.MODE_WORLD_READABLE);
    OutputStreamWriter osw = new OutputStreamWriter(fOut);
    ReadItIn(); //calls the read method, to get the values from the file
    int tmp1 = 0 + countertmp + counter;
    int tmp2 = 0 + counterpostmp + counterpos;
    int tmp3 = 0 + counternegtmp + counterneg;
    finalwrite = "" + tmp1 + "," + tmp2 + "," + tmp3;
    osw.write(finalwrite);
    osw.flush();
    osw.close();
}

Readメソッド:

public void ReadItIn() throws IOException
            {
                FileInputStream fIn = openFileInput("stats.txt");
                InputStreamReader isr = new InputStreamReader(fIn);
                char[] inputBuffer = new char[fIn.available()];
                isr.read(inputBuffer);
                stringFromFile = new String(inputBuffer);
                String [] tmp = stringFromFile.split("\\,");
                if(tmp.length > 0)
                {
                    Log.d("READ", " NOT NULL");
                    for(int i = 0;i<tmp.length ; i++)
                    {
                        String temper = tmp[i];
                        if(temper == null || temper == "")
                        {
                                Log.d("NULL", "NULLIFIED");
                        }
                        else
                            try
                        {
                            int x = Integer.parseInt(temper, 10);
                            if(i == 0){counter = x;}
                            else if(i == 1){counterpos = x;}
                            else if(i == 2){counterneg = x;}
                        }
                        catch(NumberFormatException e)
                        {
                            e.printStackTrace();
                        }
                    }   
                }
                else
                    Log.d("READ", "NULL");
            }
4

1 に答える 1

1

主な問題は、を呼び出すとすぐopenFileOutputに、stats.txtファイルが何度も何度も消去されることです。

コードを段階的にデバッグしようとすると、アプリケーションを初めて実行したときに、を呼び出したときにファイルが0サイズで作成されることがわかりますopenFileOutput。これは、DDMSファイルエクスプローラーから確認できます。

したがって、それを読むとき、それは何も保持せず、何も。によって読み取られませんReadItIn。そして、それを書き込んで閉じると、DDMSファイルエクスプローラーから、ファイルが存在し、サイズが0より大きいことがわかります。

しかし、もう一度通り過ぎるとWriteItIn、を呼び出すとすぐに、openFileOutputファイルエクスプローラーからファイルサイズが0に戻ることがわかります。

于 2011-05-31T19:21:00.010 に答える