La combinación de las dos respuestas (por Visage & eumiro):
EDIT:Después de leer el comentario. línea. System.getProperty ("line.separator") no tiene uso entonces.
Antes de enviar el archivo al servidor, abra que reemplazar todos los EOLs y reescritura
Asegúrese de utilizar flujos de datos para hacerlo, y escribir en binario
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
//..
el método replaceAll tiene dos argumentos, el primero uno es la cadena para reemplazar y el segundo es el reemplazo. Pero, el primero se trata como una expresión regular, por lo tanto, '\' se interpreta de esa manera. Entonces:
"\\r\\n" is converted to "\r\n" by Regex
"\r\n" is converted to CR+LR by java
Los Mac modernos (es decir, aquellos con OS X en ellos) usan LF como un terminador de línea. – JeremyP