Классы DataOutputStream и DataInputStream служат обертками для других классов потоков. Это так называемые фильтрующие потоковые классы. С их помощью можно выводить стандартные типы данных: логические, целые, вещественные, строки. Для всех фильтрующих классов-потоков вызов метода close() приведет к закрытию потока, переданного в конструкторе. Также можно использовать try с ресурсами, чтобы явно не закрывать поток. Пример:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package javainputoutput;
/** * * @author martyshov */ import java.io.*; import java.nio.*; import java.util.*;
public class JavaInputOutput {
/** * @param args the command line arguments */ public static void main(String[] args) throws IOException {
//файловый выходной поток FileOutputStream fos = null; //обертка для файлового потока для вывода разнотипных данных: целых, вещественных, символьных, строк и так далее DataOutputStream dos = null; try { fos = new FileOutputStream("C:/test.txt"); dos = new DataOutputStream(fos);
dos.writeByte(100); dos.writeBoolean(true); dos.writeBytes("Bla-bla"); dos.writeDouble(3.14);
} catch (IOException e) { System.err.println(e.getLocalizedMessage()); } finally { if (dos != null) { dos.close(); } }
//файловый выходной поток FileInputStream fis = null; //обертка для файлового потока для вывода разнотипных данных: целых, вещественных, символьных, строк и так далее DataInputStream dis = null; try { fis = new FileInputStream("C:/test.txt"); dis = new DataInputStream(fis);
System.out.println(dis.readByte()); System.out.println(dis.readBoolean()); byte[] byte_arr = new byte[7]; dis.read(byte_arr, 0, 7); for(int i = 0; i < 7; i ++) System.out.print((char) byte_arr[i]); System.out.println(); System.out.println(dis.readDouble());
} catch (IOException e) { System.err.println(e.getLocalizedMessage()); } finally { if (dis != null) { dis.close(); } }
} }
|