Java DataInputStream

原文:https://www.studytonight.com/java-file-io/java-datainputstream-class

在本教程中,我们将学习 Java 中的DataInputStream 。这个类从数据流中读取原始数据,而不依赖于机器。Java 应用通常使用DataOutpuStream 来写数据,这些数据以后可以被DataInputStream读取。

句法

这是DataInputStream 类的内部语法声明。

public class DataInputStream extends FilterInputStream implements DataInput

方法

方法 描述
int read(byte[] b) 它用于从输入流中读取字节数。
int read(byte[] b, int off, int len) 它用于从输入流中读取**len** 字节的数据。
int readInt() 它用于读取输入字节并返回一个 int 值。
byte readByte() 它用于读取和返回一个输入字节。
char readChar() 它用于读取两个输入字节并返回一个字符值。
double readDouble() 它用于读取八个输入字节并返回一个双精度值。
boolean readBoolean() 它用于读取一个输入字节,如果字节非零则返回真,如果字节为零则返回假。
int skipBytes(int x) 它用于跳过输入流中的x 字节数据。
String readUTF() 它用于读取使用 UTF-8 格式编码的字符串。
void readFully(byte[] b) 它用于从输入流中读取字节,并将其存储到缓冲区数组中。
void readFully(byte[] b, int off, int len) 它用于从输入流中读取**len** 字节。

从文件中读取数据的 DataInputStream 类的示例

在下面给出的程序中,我们使用DataInputStream 类的read()方法从给定文件myfile.txt中读取数据。首先,我们将使用available()方法计算文件中可读取的字节数,并创建一个该大小的新字节数组。现在,我们需要使用 read()方法从文件中读取数据,然后逐个打印。

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class StudyTonight 
{
    public static void main(String[] args) throws IOException 
    { 
        FileInputStream file = new FileInputStream("E:\\studytonight\\myfile.txt");  
        DataInputStream inst = new DataInputStream(file);  
        int count = file.available();  
        byte[] array = new byte[count];  
        inst.read(array);  
        for (byte b : array) {  
            char ch = (char) b;  
            System.out.print(ch);  
        }  
    }  
}

你好,今晚学习

我的文件.txt

Hello Studytonight

读写原始数据的示例:

下面的例子对于DataInputStream 类和DataOutputStream 类的实际使用都非常重要,这里我们首先将数据写入一个文件,然后再次读取该数据。当我们存储数据时,它不会是人类可读的形式,但是我们可以使用DataInputStream以原始类型正确地读取它。

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class StudyTonight 
{
    public static void main(String[] args) throws IOException 
    { 
        DataOutputStream dataOutputStream =    new DataOutputStream(new FileOutputStream("E:\\studytonight\\myfile.txt"));
        dataOutputStream.writeInt(45);
        dataOutputStream.writeFloat(98.7F);
        dataOutputStream.writeLong(123456);
        dataOutputStream.close();
        DataInputStream dataInputStream =new DataInputStream(new FileInputStream("E:\\studytonight\\myfile.txt"));
        int   intData    = dataInputStream.readInt();
        float floatData = dataInputStream.readFloat();
        long  longData    = dataInputStream.readLong();
        dataInputStream.close();
        System.out.println("int data: " + intData);
        System.out.println("float data: " + floatData);
        System.out.println("long data: " + longData);
    }  
}

int 数据:45 float 数据:98.7 long 数据:123456

我的文件.txt

 -BÅff     â@

结论

在本教程中,我们学习了 Java 中的 DataInputStream 类及其方法。这个类从数据流中读取原始数据,而不依赖于机器。