大神们好,我是新手小白,今天在学习Java的IO操作中遇到一个百思不得其解的问题,下面的代码是今天做的关于DataInputStream类的练习,我很不解为什么DataInputStream的readUTF方法不需要任何参数,但是却在读取的时候可以知道自己读取多长,不明白他是怎么知道我当初在写入的时候写入的长度的,他是靠什么控制读取的范围的呀???比如下面的程序,readUTF方法就可以知道读取"昨天"这两个字,是怎么知道我就刚好需要读这两个字,而不会把下面的内容给读出。很是感谢大家的回答
package com.zhang.hello;
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 IODataStreamTest {
public static void main(String[] args) throws IOException {
File file=new File("f:/zhang.dat");
if(!file.exists()){
file.createNewFile();
}
DataInputStream dis=new DataInputStream(new FileInputStream(file));
DataOutputStream dos=new DataOutputStream(new FileOutputStream(file));
int testInt=2016;
double testDouble=10.12;
long testLong=20161012;
dos.writeInt(testInt);
dos.writeDouble(testDouble);
dos.writeLong(testLong);
//utf-8 一个中文占3个字节
dos.writeUTF("昨天");
dos.writeUTF("今天是个好日子");
dos.close();
int testRInt=dis.readInt();
System.out.println(testRInt);
double testRDouble=dis.readDouble();
System.out.println(testRDouble);
long testRLong=dis.readLong();
System.out.println(testRLong);
String testRStr=dis.readUTF();//为什么readUTF知道读取多长
System.out.println(testRStr);
dis.close();
}
}
执行结果:
2016
10.12
20161012
昨天
慕码人8056858
相关分类