Решение проверил на нескольких примерах, в т.ч. на UTF-8 всё работает корректно. При этом метор выдаёт достаточно странную рекомендацию "Используй System.lineSeparator() в качестве универсального разделителя строк."
Не ясно где и зачем.
package com.javarush.task.task19.task1925;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
/*
Длинные слова
*/
public class Solution {
public static void main(String[] args) throws IOException {
String fileName = args[0];
// BufferedReader fileReader1 = new BufferedReader( new FileReader(fileName) );
FileReader fileReader = new FileReader(fileName);
// reader.close();
// BufferedWriter bufWriter = new BufferedWriter(new FileWriter(args[1], false));
FileWriter writer = new FileWriter(args[1]);
String line = "";
String newLine;
char[] cbuf = new char[256];
int iLen = 1;
while ( iLen >= 0) {
iLen = fileReader.read(cbuf);
if (iLen >= 0)
line += new String(cbuf).substring(0,iLen);
}
fileReader.close();
newLine = line.replaceAll("(\\r\\n|\\n)", " ").trim();
String[] partLine;
partLine = newLine.split(" ");
iLen = 0;
int i;
for (String word : partLine) {
i= word.length();
if (i>1 && iLen == 0) {
if(word.substring(0,1).equals("\uFEFF"))
line = word.substring(1);
else
line = word;
} else
line = word;
if (line.length() > 6) {
if (iLen == 0)
writer.write(line );
else
writer.write("," + line );
iLen++;
}
}
writer.close();
}
}