FileReader(可能)在第二次打电话后做了疯狂的事情

时间:2016-03-18 17:59:10

标签: android file filereader filewriter

我的应用程序正在将数据写入txt文件。 (代码原来出现在另一个原因)

我总是将整个文件读入字符串数组并替换显式行。

阅读文件后,我记录数据以观察它。我的主要是调用应用程序7次(每行),但在第一次调用后,数据im日志记录很奇怪。

这是我的代码:

 public void writeFileData(String data, int line) {

    String[] lines = new String[999];
    File file = null;
    BufferedReader br = null;
    FileOutputStream fos = null;
    OutputStreamWriter os = null;

    try {


        file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "data.txt");

        if(!file.exists())
        {
            try
            {
                if(file.createNewFile())
                {
                    Toast.makeText(BaseActivity.this, "File was created", Toast.LENGTH_LONG).show();
                }
            }
            catch(Exception ex)
            {
                Log.e("Error creating file", ex.getMessage());
            }
        }

        br = new BufferedReader(new FileReader(file));

        int i = 0;
        while(i < 7)
        {
            buffer = br.readLine();

            lines[i] = buffer;
            i++;
        }

        br.close();

        fos = new FileOutputStream(file, false);

        lines[line] = data;

        for(i = 0; i < 7; i++)
        {
            if (lines[i].isEmpty())
            {
                Log.e(TAG, i + "is empty");
            }
            else
            {
                Log.e(TAG, lines[i]);
            }
        }

        for(i = 0; i < 7; i++)
        {
            try {
                fos.write(lines[0].getBytes());
            }
            catch (Exception ex)
            {
                Log.e("Error writing", ex.getMessage());
            }
        }

        try
        {
            fos.close();
        }
        catch(Exception ex)
        {
            Log.e("Error closing/flushing", ex.getMessage());
        }
    }
    catch(Exception ex)
    {
        Log.e("Error creating streams", ex.getMessage());
    }

}

My logcat

主要内部的调用如下:

    writeFullData();           
    writeFileData("001",0);
    writeFileData("002",1);
    writeFileData("110",2);
    writeFileData("110",3);
    writeFileData("110",4);
    writeFileData("110",5);
    writeFileData("110",6);

writeFullData(); 正在写入txt文件(在logcat图像中可见)

提前致谢。

Xaver Seiringer

1 个答案:

答案 0 :(得分:0)

我调用了一个覆盖整个文件的函数。这样我就可以覆盖每一行并记录输入,所以我会注意到行的变化,而我的 writeFileData()函数也必须读取一些东西。 我没有在FileWriter中写错!

$viewer.on("click", "div > div > span.Figcontent a", function() {
  toggleViewerCaption();
});

我在文件中写了21行而不是7行(在调用4次之后)。

第二个错误是我忘记了 writeFileData 中的bw.newLine。

那些错误......

但是感谢你的帮助。