使用FileWriter在begin上写文本

时间:2012-02-20 21:04:27

标签: android filewriter

Hy,我正在使用FileWriter在SD卡上写一些文字,就像这样

FileWriter write = new FileWriter(Environment.getExternalStorageDirectory().toString() + "text.txt", true);
write.append("This is first written");
write.close();

现在我写一些其他文字

FileWriter write = new FileWriter(Environment.getExternalStorageDirectory().toString() + "text.txt", true);
write.append("This is second written");
write.close();

看看这个文件,它看起来如此

This is first written
This is second writtn

现在,我的问题是,如何编写第二个文本并将其放在第一个文本上方,我还没有找到任何搜索选项。我知道我可以先阅读文本,然后写一个新文件,最后放入重新发布的文本,但还有其他解决方案吗?

3 个答案:

答案 0 :(得分:1)

我不知道Android中默认提供的类可以执行此操作。

即使有一个,如果你考虑它,它唯一可行的方法就是首先做你对读取当前内容的说法,附加到要添加的数据然后回写。

您可以创建一个扩展FileWriter的类,首先打开/读取/关闭文件,然后在写入新数据之前将append设置为false再次打开它加上之前的数据。

Sparky使用RandomAccessFile的想法是另一种选择,因为在写入数据之前至少可以寻找开头(在重新打开之前无需先关闭文件)。但是你仍然必须首先阅读先前的数据作为开始,然后写入不会“推”现有数据 - 它只会覆盖它。

答案 1 :(得分:1)

您是控制文件视图的人,而不是用户使用其他程序查看文件吗?如果是这样,那么只反向显示文件内容呢?

答案 2 :(得分:0)

我会在这里向你解释。

假设我已经在文件上写了一些数据,而数据看起来是

 21.02.2012, 11:43<#>-<#>88<#>-
 21.02.2012, 13:12<#>-<#>80<#>-
 21.02.2012, 19:36<#>-<#>61<#>-
 22.02.2012, 07:15<#>-<#>50<#>-
 23.02.2012, 12:14<#>-<#>44<#>-

现在在我的应用程序中,我阅读了文本并将其拆分为&lt;#&gt;

 String split = readen.split("<#>");

我想使用WebView显示文本,并在表格中显示它看起来如此

的数据
----------------------
| 23.02.2012         |
----------------------
| 12:14 | - | 44 | - |
----------------------

----------------------
| 22.02.2012         |
----------------------
| 07:15 | - | 50 | - |
----------------------

----------------------
| 21.02.2012         |
----------------------
| 19:36 | - | 61 | - |
| 13:12 | - | 80 | - |
| 11:43 | - | 88 | - |
----------------------

我读了一行,当日期等于之前的日期时,它在同一个表中,否则关闭表并打开一个新的并放入新数据,再次读取并查看日期日期是否等于数据,然后放入相同的表,其他再次关闭并打开一个新表...这不是很难建立,但建立这个和恢复是非常困难的:D所以我想改变文件中的数据,这样我就不用费心了通过反转,简单地读取数据并创建表格