我已经为文本文件的读写创建了j2me应用程序
现在在阅读时我读了一行并将其发送到服务器。之后我想从文本文件中删除该行。
我没有得到怎么做。在一些例子中,我发现解决方案是在一个对象中复制原始文件内容,然后从对象中删除该字符串,然后删除原始文件并使用该新对象创建新文件。
我不认为这是好方法。还有其他办法吗???
修改
实际上问题就像一个应用程序在文本文件中写入一些数据而我的另一个应用程序读取一行发送到服务器并删除该行。
现在,如果我采用复制新对象和删除文件等方法并使用新对象编写新文件,那么我会发现一个问题
如果删除了文件,则第一个应用程序找不到该文件,因此可能会创建新文件 只有一个数据和第二个应用程序将基于新对象创建新文件 所以我的数据会丢失
修改
即使我尝试使用RMS做同样的事情,但当两个应用程序同时访问相同的RMS时,RMS文件中的所有数据都是清晰的。第一个应用程序打开RMS进行写入,第二个打开进行同步和删除。但是当两者都打开RMS时,所有数据都清晰。
是否可以从一个应用程序设置对RMS文件的锁定?
答案 0 :(得分:4)
不,你就是这样做的。
您无法从文件开头删除一行。您需要重新编写没有该行的文件。
(请注意,这不是特定于java)
答案 1 :(得分:1)
在插入记录时,我正在为一个特定文件夹中的单个记录创建单个文件 现在,该文件由后台应用程序读取并发送到将被应用程序删除的服务器。
所以它解决了文件读写中的并发问题。
我知道这不是好方法,但我没有找到任何其他好方法。
答案 2 :(得分:0)
大多数文件系统没有删除中间内容的机制。 (很确定j2me就是这种情况)。所以标准做法是打开一个新文件;将旧文件复制到不需要的行所在的位置,跳过它,然后复制文件的其余部分。我知道这听起来不够优雅,但事实就是如此:)