NO windows a quebra de linha é diferente do Linux.
Separador de linha em unix/linux: LF (Line Feed) = ‘\n’ - hexa 0A
Separador de linha em dos/windows: CR+LF (Carriage Return / Line Feed) = ‘\r\n’ - hexa 0D0A
Ou seja, você deve usar \r\n no Windows, ou então, se você estiver usando a classe BufferedWriter, você pode usar o método newLine() que ele ja identiica o SO e faz a quebra de linha corretamente
Acho que o único programa do Windows que não aceita arquivos-texto no formato Unix é o próprio Notepad (Bloco de Notas). Outros programas da própria Microsoft - Wordpad, MS Office Word, MS Office Excel, MS Visual Studio etc. aceitam arquivos-texto no formato Unix tranqüilamente.
Como de costume há 200 jeitos diferentes de resolver o mesmo problema em Java:
println - É o recomendado se você usar algo derivado de PrintWriter.
printf ("%n") - se você usar Java 5.0 e printf.
System.getProperty (“line.separator”) - se você não está usando PrintWriter mas outra coisa.
newLine - se você usar BufferedWriter.
Se o programa java gerou o arquivo no linux ele vai ficar com o \n no final das linhas, voce pode forçar o tipo de quebra do windows colocando explicitamente o \r\n ou, depois que o arquivo já foi criado no linux/unix se o usuário vai abri-lo no windows dá para consertar assim: Na hora de transferir o arquivo use o ftp/scp com modo ascii, neste modo o utilitário converte os caracteres automaticamente. Também é possível utilizar um programa existente em algumas distribuições linux: unix2dos. O contrário também existe: dos2unix.
[]s