JAVA binary I/O概览

二进制IO中的继承关系
在这里插入图片描述
电脑上的文件可以分为两种,一种是文本文件,可以通过文本编辑器查看,另一种是二进制文件,单纯的01串,机器才能识别.也就是说人能看懂文本文件,但是看不懂二进制文件.

两种文件的区别在于文本文件是基于二进制文件,通过解码编码方式形成的,用的是ASCII或者Unicode字符集.文本文件实际上还是二进制文件.
不同在于,编码方式.比如,100, 保存为二进制文件就是 0X64(16进制的100).保存为文本文件则是拆开来 1,0,0 分别用1,0在字符集中对应二进制码保存.

二进制IO可以分为输入类和输出类:InputStream 和 Outputstream是两个抽象类
java.io 中.
在这里插入图片描述
在这里插入图片描述
它的子类按功能可以分为字节的,原始数据类型的,对象的三种

第一种 fileinputstream/fileoutputstream
read()方法每次读取一个字节,-1表示文件结束
为什么-1表示结束可以参考
https://blog.csdn.net/qijingwang/article/details/79742561

package spider;
import java.io.*;
public class ISDemo {
	public static void main(String[]args)  {
		String path="D:\\text.dat";
		File test=new File("D:\\test.txt");
		try {
		OutputStream os=new FileOutputStream(path);//两种构造方法 加file对象或者文件路径
		for(int i=0;i<10;i++)
			os.write(i);
		InputStream is=new FileInputStream(path);
		for(int i=0;i<10;i++)
			System.out.println("the ith time read:"+is.read());
		}
		catch(Exception ex) {
			ex.printStackTrace();
		}
	}
	
}

第二种:Dataoutputstream/inputstream. 能够包装原始数据类型
BufferedOutputstream的数据读写在内存的一块buffer中而不是磁盘,速度更快,其他相同.
构造方法:
DataOutputStream os=new DataOutputStream(new FileOutputStream(…));
writebytes() 和 writeutf() 和writechars()的区别
第一个是写入字节
第二个是写入对应的UTF8字符
第三个写入ASCII字符

package spider;
import java.io.*;
public class ISDemo {
	public static void main(String[]args)  {
		String path="D:\\text.dat";
		File test=new File("D:\\test.txt");
		try {
		DataOutputStream os=new DataOutputStream(new FileOutputStream(path));//两种构造方法 加file对象或者文件路径
		
		os.writeBoolean(true);
		os.writeByte(2);
		os.writeBytes("abc");
		//os.writeChars("abcd");
		os.writeUTF("abder");
		DataInputStream is=new DataInputStream(new FileInputStream(path));
		
			System.out.println(is.readBoolean());
			System.out.println(is.readByte());			
			System.out.println(is.read(new byte[3],0, 2));
			//System.out.println(is.read(new byte[4],0, 4));
			System.out.println(is.readUTF());
		}
		catch(Exception ex) {
			ex.printStackTrace();
		}
	}
	
}

posted @ 2019-08-02 20:59  少年留不住  阅读(533)  评论(0编辑  收藏  举报