Java DataInputStream类、DataOutputStream类(数据输入/输出流)

        数据输入输出流(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
		世界
		世界

		*/
		
	
	}

}

猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/80641525