数据输入输出流(DataInputStream类与DataOutputStream类)
允许应用程序以与机器无关的方式从底层输入流中读取基本Java数据类型。也就是说,
当读取一个数据时,不必再关心这个数值应当是什么字节。
DataInputStream类只提供了一个readUTF()方法返回字符串。这是因为要在一个连续的字节流读取一个字符串,如果没有特殊的标记作为一个字符串的结尾,并且事先也不知道这个字符串的长度,也就无法知道读取到什么位置才是这个字符串的结束。
DataOutputStream类中只有writeUTF()方法向目标设备中写入字符串的长度,所以我们也只能准确地读回写入字符串。
import java.util.*; import java.io.*; import java.math.*; public class Main{ public static void main(String[] args) throws IOException { try { // Data Stream写到输入流中 DataOutputStream dos = new DataOutputStream(new FileOutputStream( "datasteam.txt")); dos.writeBytes("世界"); //按2字节写入,都是写入的低位 dos.writeChars("世界"); // 依照Unicode写入 // 依照UTF-8写入(UTF8变长,开头2字节是由writeUTF函数写入的长度信息。方便readUTF函数读取) dos.writeUTF("世界"); dos.flush(); dos.close(); // Data Stream 读取 DataInputStream dis = new DataInputStream(new FileInputStream( "datasteam.txt")); // 读取字节 byte[] b = new byte[2]; dis.read(b); System.out.println(new String(b, 0, 2)); // 读取字符 char[] c = new char[2]; for (int i = 0; i < 2; i++) { c[i] = dis.readChar(); } System.out.println(new String(c, 0, 2)); // 读取UTF System.out.println(dis.readUTF()); dis.close(); } catch (IOException e) { e.printStackTrace(); } /*运行结果是: L 世界 世界 */ } }