2017-01-03 92 views
1

我想將原始文件複製到新文件中。在新文件中,我想要與原始完全相同的東西,但沒有空白行。如何從java中的文本文件中刪除空行

注:我看了看其他的職位,沒有成功嘗試。

目前:

1 

2 

3 

如何我希望它是: - 沒有空行

1 
2 
3 

這裏是我到目前爲止的代碼:

inputFileName = "x.txt"; 
    outputFileName = "y.txt"; 

    inputFile = new BufferedReader(new FileReader(inputFileName)); 
    outputFile = new PrintWriter(new FileWriter(outputFileName)); 

    String lineOfText = inputFile.readLine(); 

    while(lineOfText != null) 
    { 
     if (lineOfText.isEmpty()) 
     { 
     outputFile.print("null"); 
     } 

     outputFile.println(lineOfText); 
     lineOfText = inputFile.readLine(); 
    } 

    inputFile.close(); 
    outputFile.close(); 
} 

感謝所有可能幫助的人。我認爲print("null")會打印出'沒有',但它確實打印出null,我不知道如何打印出'沒有'。

+1

只是改變,如果情況是這樣,它可能工作。 如果(lineOfText.trim()的isEmpty()) – Darshit

+0

也不要寫「空」,只是如果該行微調 –

+1

的方法來「打印無」是_not執行語句後的空沒有做任何事情打印任何東西_。 – ajb

回答

0

你在正確的軌道上,但是這

while(lineOfText != null) 
{ 
    if (lineOfText.isEmpty()) 
    { 
    outputFile.print("null"); 
    } 
    outputFile.println(lineOfText); 
    lineOfText = inputFile.readLine(); 
} 

不應該在空行寫null。我想你想要的東西,像

while(lineOfText != null) 
{ 
    if (!lineOfText.isEmpty()) 
    { 
     outputFile.println(lineOfText); 
    } 
    lineOfText = inputFile.readLine(); 
} 

此外,我建議你使用一個try-with-resources Statement而不是手動管理您的close(S)。在測試之前對trim(如評論中所建議的)可能是一個好主意,並且您可以簡化您的循環並且您應該限制可變的可見性。總之喜歡,

String inputFileName = "x.txt"; 
String outputFileName = "y.txt"; 

try (BufferedReader inputFile = new BufferedReader(new FileReader(inputFileName)); 
     PrintWriter outputFile = new PrintWriter(new FileWriter(outputFileName))) { 
    String lineOfText; 
    while ((lineOfText = inputFile.readLine()) != null) { 
     lineOfText = lineOfText.trim(); 
     if (!lineOfText.isEmpty()) { 
      outputFile.println(lineOfText); 
     } 
    } 
} 
+0

這工作!謝謝!有沒有辦法刪除現在出現在文件最後一行的空行? (這是現在唯一的空白行) – ChosenForWorlds

+0

@ChosenForWorlds根據您的平臺,最終的EOL可能是必需的,最終可能不會被視爲空白行。所以爲了保持平臺獨立性,通常最好包含最後的EOL。 Java會忽略它,並且在用readLine讀迴文件時,不會在最後返回空行。 –

1

您需要跳過println的情況下,該行是空:

while(lineOfText != null) 
{ 
    if (!lineOfText.isEmpty()) { 
     outputFile.println(lineOfText); 
    } 
    lineOfText = inputFile.readLine(); 
} 
+0

如果他的lineOfText =「」比得到這種類型的值比lineOfText.isEmpty()返回false。所以,我認爲你應該添加lineOfText .trim()。isEmpty()。 – Darshit

+0

@Darshit:當然,取決於作者所稱的空白。在這種情況下,值得一看apache StringUtils.isBlank() - https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#isBlank-java。 lang.CharSequence- –

-1
public static void main(String[] args) { 

     Scanner file; 
     PrintWriter writer; 

     try { 

      file = new Scanner(new File("src/data1.txt")); 
      writer = new PrintWriter("src/data2.txt"); 

      while (file.hasNext()) { 
       String line = file.nextLine(); 
       if (!line.isEmpty()) { 
        writer.write(line); 
        writer.write("\n"); 
       } 
      } 

      file.close(); 
      writer.close(); 

     } catch (FileNotFoundException ex) { 
      Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); 
     } 
} 
+0

「\ n」是特定於平臺的行結尾 –