2011-05-26 36 views
0

我想在某些原因正在創建的文本文件的前面刪除多餘的行。下面是我在做什麼的代碼:刪除文本文件中的多餘行

String line; 
while ((line = textReader.readLine()) != null) { 
    if (!line.contains("//")) textData.add(line); 
    Pattern pattern = Pattern.compile("//.*$", Pattern.DOTALL); 
    Matcher matcher = pattern.matcher(line); 
    line = matcher.replaceFirst(""); 

如果我刪除了,如果textData.add(線);(line.contains( 「//」)!)那麼線路不會被輸出。下面是我用它來調用寫方法:

 WriteToFile filetoo = new WriteToFile("/Users/John/Desktop/newtext.txt", true); 
      filetoo.write(anyLines[i]); 

我想從第一行開始,並開始寫入文件。下面是我的文件看起來像:

................. // blank space (I want to get rid of this) 
line 1 
line 2 
line 3 

雖然我希望它看起來像這樣:

line 1 
line 2 
line 3 

有什麼建議?

回答

0

您可以檢查該行是否爲「空」並跳過它 - if (line.trim().length() != 0)應該告訴您該行是否不是「空白」。

+0

我用繼續;跳過? – rudna1010 2011-05-26 01:10:51

+0

這取決於你正在嘗試做什麼。您可以將if語句放在處理行的部分的周圍,以確保該行在處理它之前具有某些內容。或者你可以添加'if(line.trim().length()== 0)continue'這一行到'while循環的開頭。這將跳過'while循環中的空白行。 – bamana 2011-05-26 01:20:20

+0

謝謝,明白了! – rudna1010 2011-05-26 01:26:27

0

因此它不是空行,而是匹配RE /^\s*\/\/.*/?

我引用的RE應該工作,如果你不使用/命令, 「^ \ S * // *」。

如果是空白的,也許是這樣的:

[編輯]

first = 1; 
while ((line = textReader.readLine()) != null) { 
    if (first) 
    { 
    if (matchera.matches("\s*$", line)) 
    { 
     continue; 
    } 
    first = 0; 
    } 
+0

不,它是一個空行 - 我寫入文件並看到第一行是空白的。我想刪除空白行並從頂部開始。 – rudna1010 2011-05-26 01:12:44

+0

@ rudna1010:我編輯了答案以提供示例。 – 2011-05-26 01:21:15

+0

我覺得巴馬納的方法簡單得多(而且工作),但是無論如何感謝。 – rudna1010 2011-05-26 01:28:14