优艾设计网

Java的DataInputStream的readUTF方法是怎么读取字符串的????

优艾设计网 https://www.uibq.com 2023-06-23 07:43 出处:网络 作者:PS基础教程
大神们好,我是新手小白,今天在学习Java的IO操作中遇到一个百思不得其解的问题,下面的代码是今天做的关于DataInputStream类的练习,我很不解为什么DataInputStream的readUTF方法不需要任何参数,但是却在读取的时候

大神们好,我是新手小白,今天在学习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 ja优艾设计网_设计LOGOva.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
昨天


john_liu1 11小时前

优艾设计网_Photoshop论坛

DataInputStream


无尽虚空恶魔 优艾设计网_Photoshop百科 10小时前

看源码,调用的第一句就获取了长度int utflen = in.readUnsignedShort();这个方法的Doc :


gladstone 10小时前

优艾设计网_在线设计

Reads two input bytes and returns an int value in the range 0 through


3优艾设计网_Photoshop论坛60U3383305454 10小时前

readUTF的Doc:


没你的地方不是家 10小时前

Let a be the first byte read and b be the second byte. The value returned is:

优艾设计网_PS问答


另木子 优艾设计网_电脑技术 10小时前

IOException - if an I/O error occurs.


0

精彩评论

暂无评论...
验证码 换一张
取 消