2011-04-18 140 views
1

我已经创建了j2me应用程序,用于读取文本文件的写入在文本文件中删除单行?

现在在读取时我读取一行并将其发送到服务器。之后,我想从文本文件中删除该行。

我不知道该怎么做。在一些例子中,我发现解决方案是将原始文件内容复制到一个对象中,然后从该对象中删除该字符串,然后删除原始文件并使用该新对象创建新文件。

我不认为这是一种好方法。有没有其他方法可以做到这一点?

编辑:

实际问题,就像是一个应用程序在文本文件中写入一些数据,我的另一个应用程序读取一行发送到服务器,并删除该行。

现在,如果我去喜欢副本的新对象的方法和删除文件,并写入新的目标新的文件,然后我就发现了一个问题

如果文件被删除,那么第一个应用程序无法发现文件,以便它可以创建新的文件 只有一个数据和第二应用将基于这样我的数据会丢失新的对象 创建新的文件

编辑:

即使我试图做同样的事情RMS但是当两此时应用程序正在访问相同的RMS,RMS文件中的所有数据都是清除的。第一个应用程序打开RMS用于写入,第二个应用程序打开同步和删除。但在双方都开放RMS时,所有数据都清楚了。

是否可以从一个应用程序锁定RMS文件

+2

可能是通过使用文本文件共享数据不是一个好主意吗? 为什么你不使用RMS。 一个应用程序在RMS中创建记录。其次 - 阅读并删除它们。 – oxigen 2011-04-18 10:16:06

+0

@oxigen我试过但发现问题,当两个应用程序访问相同的RMS在那个时候我的所有数据都丢失。这就是为什么我尝试使用文件。看我的编辑。 – Mihir 2011-04-18 10:50:40

+0

+1。 :):P – Cipi 2011-04-18 11:06:30

回答

1

当插入记录时,我正在为一个特定文件夹中的单个记录创建单个文件 ,因为该文件被后台应用程序读取并发送到服务器由应用程序删除。

所以它解决了文件读写的并发问题。

我知道这不是好的方法,但我没有找到任何其他好方法。

4

不,你就是这么做的。

您不能从文件的开头删除一行。您需要重新写入没有该行的文件。

(请注意,这是不特定于Java)

+0

呃...你真的不能做你想做的事。 – 2011-04-18 05:46:22

+0

哦,你能建议任何好的方法吗? – Mihir 2011-04-18 05:47:29

+0

@Mihir:RMS是你需要的。 – Cipi 2011-04-18 11:07:34

0

大多数文件系统不具备在中间删除的东西的机制。 (很确定这是j2me的情况)。所以一个标准的做法是打开一个新文件;将旧文件复制到不需要的行的位置,将其跳过,然后复制文件的其余部分。我知道这听起来很不雅,但这就是它的样子:)