Вы не пишете текст в файл, вы пишете в него объекты, что означает, что вы получаете заголовок потока, информацию о типе и внутреннюю структуру. Чтобы написать текст, используйте Writer:
Writer w = new OutputStreamWriter(new FileOutputStream(filename), encoding);