数据流
DateInputStream和DataOutputStream类创建的对象称为数据输入流和数据输出流。这两个流是很有用的流,它们允许程序按着机器无关的风格读取Java原始数据。也就是说,当读取一个数值时,不必关心这个数值应当是多少个字节。
以下是DataInputStream和DataOutputStream的构造方法。
- DataInputStream(InputStream in)创建的数据输入流指向一个由参数in指定底层输入流。
- DataOutputStream(OutputStream out)创建的数据输出流指向一个由参数out指定的底层输出流。
数据流需要使用到底层流。
代码展示如下所示:
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Test02 { public static void main(String[] args) { // TODO Auto-generated method stub File file = new File("E:/test/write01.txt"); try { FileOutputStream out = new FileOutputStream(file); DataOutputStream outData = new DataOutputStream(out); outData.writeInt(100); outData.writeLong(123456789); outData.writeFloat(3.1415926f); outData.writeDouble(987654321.1234563); outData.writeBoolean(false); outData.writeChars("Hello! 大家好"); } catch (IOException e) {} try { FileInputStream in = new FileInputStream(file); DataInputStream inData = new DataInputStream(in); System.out.println(inData.readInt()); System.out.println(inData.readLong()); System.out.println(inData.readFloat()); System.out.println(inData.readDouble()); System.out.println(inData.readBoolean()); char c = ' '; while((c = inData.readChar()) != ' ') System.out.print(c); } catch (IOException e) {} } }
运行结果如下所示:
字符串的读取是读一个一个字符。
该代码的数据流没有关闭,这样是不正确的。
只有字符数组里是可以不用关闭的。