Что не нравится валидатору, на моих тестовых примерах все робит...
package com.javarush.task.task19.task1925;
/*
Длинные слова
В метод main первым параметром приходит имя файла1, вторым - файла2.
Файл1 содержит слова, разделенные пробелом.
Записать через запятую в Файл2 слова, длина которых строго больше 6.
В конце файла2 запятой не должно быть.
Закрыть потоки.
Пример выходных данных в файл2:
длинное,короткое,аббревиатура
Требования:
1. Программа НЕ должна считывать данные с консоли.
2. Программа должна считывать содержимое первого файла (используй FileReader c конструктором String).
3. Поток чтения из файла (FileReader) должен быть закрыт.
4. Программа должна записывать через запятую во второй файл все слова из первого файла длина которых строго больше 6(используй FileWriter).
5. Поток записи в файл (FileWriter) должен быть закрыт.
*/
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Solution {
public static void main(String[] args) throws IOException {
String fileName1 = args[0];
String fileName2 = args[1];
/*
String fileName1 = "C:\\Users\\poblo\\Desktop\\new1.txt";
String fileName2 = "C:\\Users\\poblo\\Desktop\\new2.txt";*/
BufferedReader reader = new BufferedReader(new FileReader(fileName1));
BufferedWriter writer = new BufferedWriter(new FileWriter(fileName2));
while (reader.ready()) {
String line = reader.readLine();
String[] words = line.split(" ");
List<String> tmp = new ArrayList<>();
for (int i = 0; i < words.length; i++) {
if (words[i].length() > 6) {
tmp.add(words[i]);
}
}
for (int i = 0; i < tmp.size(); i++) {
if (i != tmp.size() - 1) {
writer.write(tmp.get(i) + ",");
} else {
writer.write(tmp.get(i));
}
}
writer.write("\n");
}
reader.close();
writer.close();
}
}