Мне удалось получить этот код. Он читает test.txt с примерно 10000 словами (каждое слово в своей строке) и форматирует их сначала по алфавиту и второй длине BY. Однако, когда я открываю sort.txt, я получаю сначала, как много пустых строк, после чего слова правильно формируются. Мой вопрос заключается в том, как удалить пустые строки, поскольку они не могут быть там. Будет ли работать .trim?удаление пустых строк из txt-файла
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();
}
}
только два младших пункта: нет необходимости называть flush() перед закрытием(). Вам также не нужно закрывать fileWriter, так как он будет закрыт при закрытии printWriter. –
спасибо, действительно, для программирования еще –