IO流分为输入流、输出流
还有字节流、字符流
1、字节流:
(1)InputStream:抽象了应用程序读取数据的方式
(2)OutputStream:抽象了应用程序写 出数据的方式
2)EOF = End 读到-1就读到结尾
3)输入流基本方法
int b = in.read();读取一个字节无符号填充到int低八位.-1是EOF
in.read(byte[] buf) 读取数据填充到字节数组buf
in.read(byte[] buf,int start, int size)读取数据到字节数组buf从buf的start位置开始存放size长度分数据
4)输出流基本方法
out.write(int b)写出一个byte到流,b的低8位
out.write(byte[] buf)将buf字节数组都写到流
out.write(byte[] buf, int start,int size) 字节数组buf从start位置开始写size长度的字节到流
5)FileInputStream--->具体实现了在文件上读取数据
6)FileOutputStream--->实现了向文件中写出byte数据的方法
7)DataOutputStream/DataInputStream
对“流”功能得扩展,可以更加方面的读取int,long,字符等类型数据
DataOutputStream
writeInt()/writeDouble()/writeUT()
数据输入输出流
使用数据流的writeUTF()和readUTF() 可以进行数据的格式化顺序读写
DataOutputStream和DataInputStream主要是用来操作类型数据的。不是对象数据,注意了
writeChars 使用JAVA默认的UTF16BE编码 写成
22222222222222
2222222222
1111111111111111
DataInputStream和DataOutputStream是对流的扩展,装饰模式,可以更方便的读写int,long,字符等类型的数据,读写完要记得.close()
DataOutputStream writeInt()/writeDouble()/writeUTF()
DataInputStream 数据输出流。
DataOutputStream 数据输入流。
DataInputStream dps=new DataInputStream (文件输出流(FileInputStream));
readInt()
readLong()
readDouble()
readUTF()//采用utf-8读取
DataOutputStream dps=new DataIOutputStream (文件输入流(FileOutputStream));
writeInt()
writeLong()
writeDouble()
writeUTF() //采用utf-8
writeChars() //采用utf-16be
(7)DataOutputStream/DataInputStream
对“流”功能的扩展,可以更加方便地读取int,log,字符型等类型数据
DataOutputStream
writeInt()/writeDouble()/writeUTF()
基本类型的占用的字节大小忘记了,记一下:
byte 1字节
short 2字节
int 4字节
long 8字节
float 4字节
double 8字节
char 2字节
boolean 1字节
对"流"功能的扩展
DataOutputStream和DataInputStream是装饰模式
写 /** * 7)DataOutputStream/DataInputStream * 对“流”功能的扩展,可以更加方便的读取int,long,字符等类型数据 * DataOutputStream的常用方法:writeInt()/writeDouble()/writeUTF() */ public class DosDemo { public static void main(String[] args) throws IOException { String file = "demo/dos.dat"; DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeInt(-10); dos.writeLong(10l); dos.writeDouble(10.5); //采用utf-8编码写出 dos.writeUTF("中国"); //采用utf-16be编码写出 dos.close(); IOUtil.printHex(file); } }
读 public class DisDemo { public static void main(String[] args) throws IOException { String file = "demo/dos.dat"; IOUtil.printHex(file); DataInputStream dis = new DataInputStream(new FileInputStream(file)); int i = dis.readInt(); System.out.println(i); i = dis.readInt(); System.out.println(i); long l = dis.readLong(); System.out.println(l); double d = dis.readDouble(); System.out.println(d); String s = dis.readUTF(); System.out.println(s); dis.close(); } }
DataInputStream 数据输出流。
DataOutputStream 数据输入流。
DataInputStream dps=new DataInputStream (文件输出流(FileInputStream));
DataOutputStream dps=new DataIOutputStream (文件输入流(FileOutputStream));
dps.read[int,double,long,utf(读取方式为utf-8),……]();
//以int/double/long等方式读取文件内容。
dos.write[int,double,long,utf,chars(写入格式为utf-16be),……];
//以int/double等方式向文件内写入数据。
以何顺序的格式写入,再以何顺序的格式读出,得到的是原输入时的结果。
FileOutputStream--->具体实现了在文件上读取数据
FileOutputStream---->实现了想文件中写出byte数据的方法
DataOutputStream/DataInoutStream
对“流”功能的扩展,可以更加方面的读取int ,long,字符等类型的数据
字节流 dataoutputstream
数据输入输出流DataOutputStream/DataInputStream
对流的操作可以更方便的读取int,long,字符等类型数据
DataOutputStream dos=new DataOutputStream(OutputStream out);
DataInputStream dis=new DataInputStream(InputStream in);
包装实现对int、long、double、字符等数据写入/读取操作
dos.writeInt()/dos,writeDouble()....
dis.readInt()/din.readDouble()...
7)DataOutputStream/DataInputStream 对“流”功能的扩展,可以 更加方便的读取int,long,字符等类型数据
DataOutputStream writeInt/writeDouble()/writeUTF()
DataOutputStream/DataInputStream
对"流"功能的扩展,可以更加方面的读取int,long,字符等类型数据
DataOutputStream
writeInt()/writeDouble()/writeUTF()
readInt readLong 方法都是对FileInputStream方法的包装
DataOutputStream/DataInputStream
对“流”功能的扩展,可以更加方便的读取 int,long, 字符等类型数据
DataOutputStream:使用FileOutputStream构造出来,通过包装FileOutput,可以调用FileOutput类的write方法来构造新的更方便的写方法:
其新建对象为嵌套创建,例:
String file = "xxx";
DataInputStream dis = new DataInputStream(new FileInputStream(file));
DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
wrieteUTF()采用utf-8编码写出字符串
用utf-16be写出字符串,或字符串数组
写完之后一定要关闭流
数据输入输出流:
DataInputStream、DataOutputStream 是对“流”功能的扩展,方便读写
DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
dos.writeInt(10);
dos.writeLong(10l);字母l
dos.writeDouble(10.5);
//采用utf-8编码写出
dos.writeUTF("中国");
//采用utf-16be编码写出
dos.writeChars("中国");
7)DataOutputStream/DataInputStream
对“流”功能的扩展,可以更加方面的读取int,long,字符等类型数据
DataOutputStream
writeInt()/writeDouble()/writeUTF()
字节流---DataInputStream、DataOutputStream(数据输入、输出流)
//DataOutputStream实例 String file = "demo/dos.dat"; DataOutputStream dos = new DataOutputStream(new FileOutputStream(file)); dos.writeInt(10); dos.writeInt(-10); dos.writeLong(10l); dos.writeDouble(10.5); //采用utf-8编码输出 dos.writeUTF("中国"); //采用utf-16be编码写出 dos.writeChars("中国"); dos.close(); IOUtil.printHex(file);
//DataInputStream实例 String file = "demo/dos.dat"; IOUtil.printHex(file); DataInputStream dis = new DataInputStream(new FileInputStream(file)); int i = dis.readInt(); System.out.println(i); i = dis.readInt(); System.out.println(i); long l = dis.readLong(); System.out.println(l); double d = dis.readDouble(); System.out.println(d); String s = dis.readUTF(); System.out.println(s); dis.close();
中文用utf编码写入
dos.writeLong(23L);
数据输入输出流扩展了“流”功能,可以更方便的对int, long ,char 等类型数据进行读取
1