Объединение двух ответов (по Visage & eumiro):
РЕДАКТИРОВАТЬ: После прочтения комментария. линия.
System.getProperty("line.separator")
тогда бесполезен.
Перед отправкой файла на сервер откройте его, замените все EOL и выполните обратную запись
Обязательно используйте DataStreams и пишите в двоичном формате
String fileString;
//..
//read from the file
//..
//for windows
fileString = fileString.replaceAll("\\r\\n", "\n");
fileString = fileString.replaceAll("\\r", "\n");
//..
//write to file in binary mode.. something like:
DataOutputStream os = new DataOutputStream(new FileOutputStream("fname.txt"));
os.write(fileString.getBytes());
//..
//send file
//..
Метод replaceAll
имеет два аргумента: первый - строка для замены, а второй - замена. Но первое рассматривается как регулярное выражение, поэтому '\'
интерпретируется таким образом. Итак:
"\\r\\n" is converted to "\r\n" by Regex
"\r\n" is converted to CR+LF by Java