DataOutputStream and DataInputStream

        DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("a.txt")));
        dos.writeInt(5);
        dos.writeBoolean(true);
        dos.flush();
        dos.close();
        DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("a.txt")));
        System.out.println(dis.readInt());
        System.out.println(dis.readBoolean());
        dis.close();
        
        //学习怎样关闭流
        BufferedReader br = null;
        InputStreamReader in = null;
        try {
            in = new InputStreamReader(FileStreamTest.class.getResourceAsStream("a.txt"), "UTF-8");
            br = new BufferedReader(in);
            //按行进行读 br.readLine()
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
                if (br != null) {
                    try {
                        br.close();       //为什么in.close()没写入进去,防止br.close()抛出异常,in.close()得不到关闭。
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    
                }
                if (in !=null){
                    try {
                        in.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
        }
        
    }

Java全部的流类位于java.io包中,都分别继承字下面四种抽象流类型。

  字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

1.继承自InputStream/OutputStream的流都是用于向程序中输入/输出数据。且数据的单位都是字节(byte=8bit),如图。深色的为节点流,浅色的为处理流。

 

2.继承自Reader/Writer的流都是用于向程序中输入/输出数据,且数据的单位都是字符(2byte=16bit),如图。深色的为节点流。浅色的为处理流。

节点流类型常见的有:

对文件操作的字符流有FileReader/FileWriter,字节流有FileInputStream/FileOutputStream。

处理流类型常见的有:

缓冲流:缓冲流要“套接”在对应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写效率,同事添加了一些新的方法。

  字节缓冲流有BufferedInputStream/BufferedOutputStream,字符缓冲流有BufferedReader/BufferedWriter,字符缓冲流分别提供了读取和写入一行的方法ReadLine和NewLine方法。

  对于输出地缓冲流,写出的数据,会先写入到内存中。再使用flush方法将内存中的数据刷到硬盘。

所以。在使用字符缓冲流的时候,一定要先flush,然后再close,避免数据丢失。

转换流:用于字节数据到字符数据之间的转换。

  仅有字符流InputStreamReader/OutputStreamWriter。当中,InputStreamReader须要与InputStream“套接”。OutputStreamWriter须要与OutputStream“套接”。

数据流:提供了读写Java中的基本数据类型的功能。

  DataInputStream和DataOutputStream分别继承自InputStream和OutputStream,须要“套接”在InputStream和OutputStream类型的节点流之上。

对象流:用于直接将对象写入写出。

  流类有ObjectInputStream和ObjectOutputStream,要求写出的对象必须实现Serializable接口,来声明其是能够序列化的。否则,不能用对象流读写。

  另一个keyword比較重要,transient。修饰实现了Serializable接口的类内的属性,在以对象流的方式输出的时候,该字段会被忽略。

时间: 2024-10-11 16:51:19

DataOutputStream and DataInputStream的相关文章

JAVA IO操作:数据操作流:DataOutputStream和DataInputStream

掌握DataOutputStream和DataInputStream的作用. 可以使用DataOutputStream和DataInputStream写入和读取数据. 在IO包中提供了两个与平台无关的数据操作流 数据输出流:DataOutputStream 数据输入流:DataInputStream 通常按照一定格式将输入输出,再按照一定格式将数据输入. 要想使用数据输出流和输入流,则肯定要用户指定数据的保存格式.必须按指定的格式保存数据,才可以将数据输入流将数据读取进来. DataOutput

JavaI/O:简单的使用DataOutputStream和DataInputStream操作文件流

DataInputStream 是数据输入流.它继承于FilterInputStream.DataInputStream 是用来装饰其它输入流,它"允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型".应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据. DataOutputStream?是数据输出流.它继承于FilterOutputStream.DataOutputStream?是用来装饰其它

JAVA DataOutputStream和DataInputStream

是Java中输入输出流的装饰类 DataOutputStream 数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中.然后,应用程序可以使用数据输入流将数据读入. 主要方法: void write(byte[] b,int off,int len);//将byte数组off角标开始的len个字节写到OutputStream 输出流对象中. void write(int b);//将指定字节的最低8位写入基础输出流. void writeBoolean(boolean b);/

数据操作流DataOutputStream、DataInputStream类

[例子1] import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; public class DataOutputStreamDemo{ public static void main(String[] args) throws IOException{ File file = new File("d:" + Fi

java 数据流DataOutputStream和DataInputstream

java流操作类的认识和总结 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2pjMjExMzIy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" /> 应用实例 import java.io.*; public class DataStreamDemo { public static void main(String[] args) { t

数据流:DataOutputStream与DataInputStream的使用

看这两个类的名字就不难猜测出它们的类关系图. DataOutputStream: 主要是一些writeXxx()操作,写出, 相当于序列化 DataInputStream: 主要是一些readXxx()操作,写入, 相当于反序列化 一般情况下,两者会成对出现. 在使用过程中要特别注意, 一个writeXxx() 对应着一个readXxx(), 千万不要用readInt()去对应writeBoolean(). 说白了,就是序列化与反序列化要匹配. 下面举个例子,将Student对象的属性序列化后保

停止等待算法模拟

实现了两个程序通信的前提下,模拟实现停止等待ARQ协议.模拟实现:1.正常数据帧的通信过程2.错误帧的通信过程 3.数据帧的丢失的通信过程 程序源码及资源下载 http://download.csdn.net/detail/qq_24054661/9802134 package com.stopandwait.test; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListen

5. IO流:★★★★★

IO流:★★★★★,用于处理设备上数据. 流:可以理解数据的流动,就是一个数据流.IO流最终要以对象来体现,对象都存在IO包中. 流也进行分类: 1:输入流(读)和输出流(写). 2:因为处理的数据不同,分为字节流和字符流. 字节流:处理字节数据的流对象.设备上的数据无论是图片或者dvd,文字,它们都以二进制存储的.二进制的最终都是以一个8位为数据单元进行体现,所以计算机中的最小数据单元就是字节.意味着,字节流可以处理设备上的所有数据,所以字节流一样可以处理字符数据. 那么为什么要有字符流呢?因

20145326 《Java程序设计》第6周学习总结

20145326 <Java程序设计>第6周学习总结 教材学习内容总结 第十章 一.使用InputStream与OutputStream 1.串流设计的概念 想活用输入/输出API,一定要先了解Java中如何以串流抽象化输入/输出概念,以及InputStream.OutputStream继承架构.如此一来,无论标准输入/输出.文档输入/输出.网络输入/输出.数据库输入/输出都可以用一致的操作来处理.Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象,其实数据就好比水,串