2012-04-18 187 views
-4

我有一个文本文件,其中包含5000万封电子邮件,我想创建一个帮助我删除此文件中的行的程序。从文本文件中删除行

该程序要求我输入一个字符串:@gmail.com。然后我想删除包含字符串@gmail.com的所有行。

+1

你尝试过什么?我们不会为你做功课,如果这就是你所期望的:) – 2012-04-18 00:45:10

+3

它是否必须在Java?使用标准UNIX命令行工具可以非常容易地实现这一点。例如'grep -v“@gmail \ .com”file' – 2012-04-18 00:46:02

回答

3

这应该适合你。

编辑:删除了代码。文本解释了每一步的方式。

创建一个方法removeLineFromFile,它带有两个参数,第一个参数是要从中删除的文件,第二个参数是要删除的行的内容。

除了与第二个参数相匹配的内容之外,还创建并写入临时文件。

提示:使用bufferReader读取文件,并使用PrintWriter或FileWriter写入临时文件。

这样可以处理非常大的文件,而不需要太多的内存。然后删除原始文件,并将tempfile重命名为原始文件名。

+2

你不应该对标记为“作业”的问题给出完全编码的答案 – 2012-04-18 00:46:56

+0

没有看到标签。不知道现在是否应该删除它.. – Chris911 2012-04-18 00:47:39

+0

将代码修改为psudocode = D – 2012-04-18 00:48:07

2

常规说明:

  • 打开你的文件的FileReaderBufferedReaderScanner
  • 打开新文件的FileWriterBufferedWriter
  • 对于在Scanner每一行:
    • 如果线串不包含你的字符串
      • 写行作家
  • 关闭所有closables。
+1

或1控制台命令 – 2012-04-18 00:49:40

+0

非常感谢你...完成:D – 2012-04-19 00:17:53

+0

非常感谢你的所有答案,嗯,这不是家庭作业...我只需要它为我自己!我知道如何在Pascal编程,我知道它可以做到这一点,但问题是我有一台64位计算机,所以Turbo pascal和Borland Pascal都不会为我工作,但我在我的电脑中安装了Eclipse,然后查看Internet并我的情况最近的代码是这样的: http://pastebin.com/fyic6HqY – 2012-04-21 04:00:31

1
IO readline while(....){ 
if(str.indexof("@gmail")){ 
ioHelp.deleteline(str) 
}} 
+0

恐怕这样做不好,这里的诀窍是如何删除文件中的一行。正如其他人所说你不能,你可以复制文件,而不需要犯规线。 – 2012-04-18 06:18:15

+0

这是我的代码:http://pastebin.com/fyic6HqY请问你能帮助我,请放在哪里!我应该放什么!!?谢谢 – 2012-04-19 00:18:16

+0

非常感谢你所有的答案,那么这不是一个家庭作业......我只需要它为我自己!我知道如何在Pascal编程,我知道它可以做到这一点,但问题是我有一台64位计算机,所以Turbo pascal和Borland Pascal都不会为我工作,但我在我的电脑中安装了Eclipse,然后查看Internet并我的情况最近的代码是这样的: http://pastebin.com/fyic6HqY – 2012-04-21 04:00:15

0

非常感谢你所有的答案,那么这是不是一个家庭作业......我只需要它为我的自我!我知道如何在Pascal编程,我知道它可以做到这一点,但问题是我有一台64位计算机,所以Turbo pascal和Borland Pascal都不会为我工作,但我在我的电脑中安装了Eclipse,然后查看Internet并最近的代码,以我的情况是这样的:

http://pastebin.com/fyic6HqY