Кратко, у вас кодировка входного потока не указана. Так как внутри все в юникоде, то прсто при чтении потока нужно ему указать кодировку, в которой этот поток лежит. Тоже самое и при записи, смотрите на кодировку. Все это хорошо описано в статье "java русские буквы и не только". Вот прямо так в гугл и вгоняйте. Если чего непонятно будет, пишите в комментариях.