0

我在创建和编辑文本文件时遇到了一些问题。该文件似乎从未存储数据。

  • 如果一个文本文件不可用,我需要创建一个文本文件。
  • 如果文件中有数据,请读取该数据并使其可用。
  • 存储的数据String由三个整数值组成,由,Eg 分隔:String finalWrite = "3,5,1"
  • 所以这个字符串需要被拆分,并转换为整数以允许添加新的计数器。
  • 这些新的计数器需要写入存储在设备上的文本文件中

没有错误发生,也没有强制关闭。

我只能使用 Logcat 弄清楚这些值没有被正确存储。

我已经查看了Android开发站点上的文档。如果有人可以帮助或指出我正确的方向,将不胜感激!

我正在使用的写入方法:

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

读取方法:

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文件就会一次又一次地被删除。

如果您尝试逐步调试代码,您会看到第一次运行应用程序时,当您调用openFileOutput. 您可以从 DDMS 文件资源管理器中进行检查。

因此,当您阅读它时,它什么也没有,ReadItIn. 当您写入并关闭它时,您可以从 DDMS 文件资源管理器中看到该文件存在并且大小 > 0,这是正确的。

但是当您再次经过时WriteItIn,只要您调用openFileOutput,您就可以从文件资源管理器中看到文件大小回到 0。

于 2011-05-31T19:21:00.010 回答