Это плохой стиль - хранить ссылки на потоки «ниже» по цепочке фильтров и снова использовать эти потоки более низкого уровня, или даже менять один тип потока на другой? Например:
OutputStream os = new FileOutputStream("file");
PrintWriter pw = new PrintWriter(os);
pw.print("print writer stream");
pw.flush();
pw = null;
DataOutputStream dos = new DataOutputStream(os);
dos.writeBytes("dos writer stream");
dos.flush();
dos = null;
os.close();
Если да, то каковы альтернативы, если мне нужно использовать функции обоих потоков, например если я хочу записать в поток несколько строк текста, за которыми следуют двоичные данные, или наоборот?