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