Java IO ---学习笔记(数据流)

数据流:

接口 DataInput 和 DataOutput,设计了一种较为高级的数据输入输出方式:除了可处理字节和字节数组外,还可以处理 int、float、boolean等基本数据类型,这些数据在文件中的表示方式和它们在内存中的一样,无须转换,如 read(), readInt(), readByte()...; write(), writeChar(), writeBoolean()...此外,还可以用 readLine()方法读取一行信息。

方法:

方法返回值说明
readBoolean() boolean
readByte() byte
readShort() short
readChar() char
readInt() int
readLong() long
readDouble() double
readFloat() float
readUnsignedByte() int
readUnsignedShort() int
readFully(byte[] b) void 读满字节数组,不同于 InputStream。read
reaFully(byte[] b, int off,int len) void 读满指定长度,不同于 InputStream.read
skipBytes(int n) int 与 InputStream.skip 等价
readUTF() String 安装 UTF-8 形式从输入中读取字符串
readLine() String 按回车( )换行( )为分割符读取一行字符串,不完全支持 UNICODE
writeBoolean(boolean v) void
writeByte(int v) void
writeShort(int v) void
writeChar(int v) void
writeInt(int v) void
writeLong(long v) void
writeFloat(float v) void
writeDouble(double v) void
write(byte[] b) void 与 OutputStream.write 同义
write(byte[] b, int off, int len) void 与OutputStream.write 同义
write(int b) void 与OutputStream.write 同义
writeBytes(String s) void 只输出每个字符的低8位;不完全支持 UNICODE
writeChars(String s) void 每个字符在输出中都占两个字节

  数据流类 DateInputStream 和 DataOutputStream 的处理对象除了是字节或字节数组外,还可以实现对文件的不同数据类型的读写:

  1. 分别实现了 DataInput 和 DataOutput 接口
  2. 在提供字节流的读写手段同时,以统一的形式向输入流中写入 boolean,int,long,double 等基本数据类型,并可以再次把基本数据类型的值读取回来。
  3. 提供了字符串读写的手段

  数据流可以连接一个已经建立好的数据对象,例如网络连接、文件等。数据流可以通过如下方式建立:

FileInputStream fis = new FileInputStream("file1.txt");
FileOutputStream fos = new FileOutputStream("file2.txt");
DataInputStream dis = new DataInputStream(fis);
DataOutputStream dos = new DataOutputStream(fos);

接下来我们通过具体的代码,看一看它的用法吧:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class DataStream {

    public static void main(String[] args) throws IOException{
        // TODO Auto-generated method stub
        //向文件 a.txt 写入
        FileOutputStream fos = new FileOutputStream("a.txt");
        DataOutputStream dos = new DataOutputStream(fos);
        try {
            dos.writeBoolean(true);
            dos.writeByte((byte)123);
            dos.writeChar('J');
            dos.writeDouble(3.1415926);
            dos.writeFloat(2.122f);
            dos.writeInt(123);
        }
        finally {
            dos.close();
        }
        //从文件 a.txt 读出
        FileInputStream fis = new FileInputStream("a.txt");
        DataInputStream dis = new DataInputStream(fis);
        try {
            System.out.println("	" + dis.readBoolean());
            System.out.println("	" + dis.readByte());
            System.out.println("	" + dis.readChar());
            System.out.println("	" + dis.readDouble());
            System.out.println("	" + dis.readFloat());
            System.out.println("	" + dis.readInt());
        }
        finally {
            dis.close();
        }
    }

}
原文地址:https://www.cnblogs.com/silianbo/p/4666432.html