您的位置:首页 > 编程语言 > Java开发

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

2017-09-15 22:25 309 查看
数据流:
接口 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按回车(\r)换行(\n)为分割符读取一行字符串,不完全支持 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 的处理对象除了是字节或字节数组外,还可以实现对文件的不同数据类型的读写:

分别实现了 DataInput 和 DataOutput 接口

在提供字节流的读写手段同时,以统一的形式向输入流中写入 boolean,int,long,double 等基本数据类型,并可以再次把基本数据类型的值读取回来。

提供了字符串读写的手段

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

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("\t" + dis.readBoolean());
System.out.println("\t" + dis.readByte());
System.out.println("\t" + dis.readChar());
System.out.println("\t" + dis.readDouble());
System.out.println("\t" + dis.readFloat());
System.out.println("\t" + dis.readInt());
}
finally {
dis.close();
}
}

}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: