2012-04-18 189 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