超硬核详细学习系列第十一天——深入浅出IO的知识点,值得你学

“这是我参与8月更文挑战的第14天,活动详情查看:8月更文挑战

茫茫人海千千万万,感谢这一秒你看到这里。希望我的文章对你的有所帮助!

愿你在未来的日子,保持热爱,奔赴山海!

I/O高级流

昨天我们对高级流中的序列化学习,而在IO流的整个大体系中,他还有一些高级流等待着我们来解锁。

所以话不多说,今天我们先来学习其中一种高级流——操作基本数据的流。

操作基本数据的流

像我们之前都是操作引用类型的数据例如字符串String类型的文本,但是我们还没有遇到一个可以操作基本数据类型的流对吧。接下来就慢慢讲述:

DataOutputStream

数据输出流使应用程序以便携式方式将原始Java数据类型写入输出流。 然后应用程序可以使用数据输入流来读取数据。

1. 构造方法

  • public DataOutputStream(OutputStream out):创建一个新的数据输出流,以将数据写入指定的底层输出流。传入的参数是OutputStream类型。

    构造举例,代码如下:

    DataOutputStream dos = new DataOutputStream(new FileOutputStream("e:\demo\dos.txt"));       
    复制代码

2. 写入数据

可以看到他的源码方法里有很多可以对数据类型做操作的方法:

public class DataStreamDemo {
    public static void main(String[] args) throws IOException {
        DataOutputStream dos = new DataOutputStream(new FileOutputStream("e:\demo\dos.txt"));
​
        // 写数据了
        dos.writeByte(10);
        dos.writeShort(100);
        dos.writeInt(1000);
        dos.writeLong(10000);
        dos.writeFloat(12.34F);
        dos.writeDouble(12.56);
        dos.writeChar('a');
        dos.writeBoolean(true);
​
        // 释放资源
        dos.close();
    }
}
复制代码

程序执行后,写入到文件,你可以发现文件显示,你看不懂,这里不是乱码,是因为这里存入不是给我们读取的,而是给机器读取的。所以不要慌,下面就来讲解读取。

DataInputStream

数据输入流允许应用程序以独立于机器的方式从基础输入流读取原始Java数据类型。 应用程序使用数据输出流来写入稍后可以被数据输入流读取的数据。

1. 构造方法

  • public DataInputStream(InputStream in):创建使用指定的InputStreamDataInputStream

    构造举例,代码如下:

    DataInputStream dis = new DataInputStream(new FileInputStream("e:\demo\dos.txt")); 
    复制代码

2. 读取数据

可以看到他的源码方法里有很多可以读取数据类型方法:

public class DataStreamDemo2 {
    public static void main(String[] args) throws IOException {
        DataInputStream dis = new DataInputStream(new FileInputStream("e:\demo\dos.txt"));
​
        // 读数据
        byte b = dis.readByte();
        short s = dis.readShort();
        int i = dis.readInt();
        long l = dis.readLong();
        float f = dis.readFloat();
        double d = dis.readDouble();
        char c = dis.readChar();
        boolean bb = dis.readBoolean();
​
        // 释放资源
        dis.close();
​
        System.out.println(b);
        System.out.println(s);
        System.out.println(i);
        System.out.println(l);
        System.out.println(f);
        System.out.println(d);
        System.out.println(c);
        System.out.println(bb);
    }
}
​
程序执行结果:
10
100
1000
10000
12.34
12.56
a
true
复制代码

总结

相信各位看官都对IO流中高级流中的操作基本数据的流类有了一定了解,期待等待下一章的高级流——随机访问流教学吧!

当然还有很多流等着下次一起看吧!欢迎期待下一章的到来!

学到这里,今天的世界打烊了,晚安!虽然这篇文章完结了,但是我还在,永不完结。我会努力保持写文章。来日方长,何惧车遥马慢!

感谢各位看到这里!愿你韶华不负,青春无悔!

注: 如果文章有任何错误和建议,请各位大佬尽情留言!如果这篇文章对你也有所帮助,希望可爱亲切的您给个三连关注下,非常感谢啦!