Cita: Java, como viene de sun, que son los de solaris, que es unix, por defecto pone retornos de carro como \n. Eso en windows se ve como un cuadrito y todas las lineas seguidas (les falta en \r delante).
Por lo que yo se, Java por defecto utiliza la codificación del S.O. en el que se esté ejecutando. Yo al menos no he tenido que poner nunca manualmente ningún \r en Windows.
En cuanto al problema en si, puede que el "buffer" donde escribes tenga algo, a mi me ha pasado con los ByteArrayOutputStream, por ejemplo, asi que si puedes hazle un reset antes de usarlo.
S!