簡體   English   中英

從txt文件中刪除空行

[英]removing empty lines from txt file

我設法使此代碼正常工作。 它讀取約10000個單詞(每個單詞在其自己的行中)的test.txt,並按字母順序第一個和第二個BY長度對其進行格式化。 但是,當我打開sort.txt時,我首先得到了像很多空行這樣的單詞,然后單詞被正確格式化。 我的問題是如何刪除這些空行,因為它們不能在那里。 .trim可以工作嗎?

package test;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class sort {
public static class MyComparator implements Comparator<String>{
    @Override
    public int compare(String o1, String o2) {  
      if (o1.length() > o2.length()) {
         return 1;
      } else if (o1.length() < o2.length()) {
         return -1;
      }
      return o1.compareTo(o2);
    }
}
public static void main(String[] args) throws Exception {

    String inputFile = "test.txt";
    String outputFile = "sort.txt";

    FileReader fileReader = new FileReader(inputFile);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    String inputLine;
    List<String> lineList = new ArrayList<String>();
    while ((inputLine = bufferedReader.readLine()) != null) {
        lineList.add(inputLine);
    }
    fileReader.close();

    Collections.sort(lineList,String.CASE_INSENSITIVE_ORDER);

    FileWriter fileWriter = new FileWriter(outputFile);
    PrintWriter out = new PrintWriter(fileWriter);
    for (String outputLine : lineList) {
        out.println(outputLine);
    }   

    Collections.sort(lineList, new MyComparator());

    FileWriter Fw = new FileWriter(outputFile);
    PrintWriter pw = new PrintWriter(fileWriter);
    for (String outputLine : lineList) {
        out.println(outputLine);
    }       
    out.flush();
    out.close();
    fileWriter.close();

}
}

只是不要添加那些空行:

while ((inputLine = bufferedReader.readLine()) != null) {
    if (!inputLine.isEmpty()) {
        lineList.add(inputLine);
    }
}

所有你需要的是

for (String outputLine : lineList) {
    if (!"".equals(outputLine.trim()))
        out.println(outputLine);
    //...

您不能.trim()使用.trim()來解決問題,因為它只是在開頭和結尾砍掉了空格。 它將保留一個空String不變。 我在這里使用它來確保您還省略了不是空的行,但確實包含空格。

您可以在實際上向列表中添加字符串時進行處理,這將是一個很好的方法

while (!StringUtils.isEmpty(inputLine = bufferedReader.readLine())) {

設法使其工作。 這是解決方案。 感謝您的所有答復。

package test;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class sort {
public static class MyComparator implements Comparator<String>{
    @Override
    public int compare(String o1, String o2) {  
      if (o1.trim().length() > o2.trim().length()) {
         return 1;
      } else if (o1.trim().length() < o2.trim().length()) {
         return -1;
      }
      return o1.compareTo(o2);
    }
}
public static void main(String[] args) throws Exception {

    String inputFile = "test.txt";
    String outputFile = "sort.txt";

    FileReader fileReader = new FileReader(inputFile);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    String inputLine;
    List<String> lineList = new ArrayList<String>();
    while ((inputLine = bufferedReader.readLine()) != null) {
        lineList.add(inputLine);
    }

    Collections.sort(lineList,String.CASE_INSENSITIVE_ORDER);
    Collections.sort(lineList, new MyComparator()); 

    FileWriter fileWriter = new FileWriter(outputFile);
    PrintWriter out = new PrintWriter(fileWriter);
    FileWriter Fw = new FileWriter(outputFile);
    PrintWriter pw = new PrintWriter(Fw);
    for (String outputLine : lineList) {
        if (!"".equals(outputLine.trim()))
            out.println(outputLine);        }       
    out.flush();
    out.close();
    fileWriter.close();

}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM