DataInputStream和DataOutputStream类创建的对象称为数据输入流和数据输出流。这两个流是很有用的两个流,它们允许程序按着机器无关的风格读取Java原始数据。也就是说,当读取一个数值时,不必再关心这个数值应当是多少个字节。
DataInputStream和DataOutputStream的构造方法如下:
1)DataInputStream(InputStream in)
创建的数据输入流指向一个由参数in指定的底层输入流。
2)DataOutputStream(OutputStream out)
创建的数据输出流指向一个由参数out指定的底层输出流。
DataInputStream和DataOutputStream类的常用方法如下:
方法 | 说明 |
close() | 关闭流 |
readBoolean() | 读取一个布尔值 |
readByte() | 读取一个字节 |
readChar() | 读取一个字符 |
readDouble() | 读取一个双精度浮点值 |
readFloat() | 读取一个单精度浮点值 |
readInt() | 读取一个int值 |
readLong() | 读取一个长型值 |
readShort() | 读取一个短型值 |
readUnsignedByte() | 读取一个无符号字节 |
readUnsignedShort() | 读取一个无符号短型值 |
readUTF() | 读取一个UTF字符串 |
skipBytes(int n) | 跳过给定数量的字节 |
writeBoolean(boolean v) | 写入一个布尔值 |
writeBytes(String s) | 写入一个字符串 |
writeChars(String s) | 写入字符串 |
writeDouble(double v) | 写入一个双精度浮点值 |
writeFloat(float v) | 写入一个单精度浮点值 |
writeInt(int v) | 写入一个int值 |
writeLong(long v) | 写入一个长型int值 |
writeShort(int v) | 写入一个短型int值 |
writeUTF(String s) | 写入一个UTF字符串 |
例如,写几个Java类型的数据到一个文件,然后再读出来:
import java.io.*; public class Main { public static void main(String args[]) { File file = new File("apple.txt"); try { FileOutputStream fos = new FileOutputStream(file); DataOutputStream outData = new DataOutputStream(fos); outData.writeInt(100); outData.writeLong(123456); outData.writeFloat(3.1415926f); outData.writeDouble(987654321.1234); outData.writeBoolean(true); outData.writeChars("How are you doing"); } catch(IOException e) {} try { FileInputStream fis = new FileInputStream(file); DataInputStream inData = new DataInputStream(fis); System.out.println(inData.readInt()); //读取int数据 System.out.println(inData.readLong()); //读取long数据 System.out.println(+inData.readFloat()); //读取float数据 System.out.println(inData.readDouble()); //读取double数据 System.out.println(inData.readBoolean()); //读取boolean数据 char c = '\0'; while((c=inData.readChar()) !='\0') { //'\0'表示空字符 System.out.print(c); } } catch(IOException e) {} } }
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程