字节流中byte[]的作用

/*
 * 字节输出流操作步骤:
 * A:创建字节输出流对象
 * B:调用write()方法
 * C:释放资源
 * 
 * public void write(int b):写一个字节
 * public void write(byte[] b):写一个字节数组
 * public void write(byte[] b,int off,int len):写一个字节数组的一部分
 */
public class FileOutputStreamDemo2 {
	public static void main(String[] args) throws IOException {
		// 创建字节输出流对象
		// OutputStream os = new FileOutputStream("fos2.txt"); // 多态
		FileOutputStream fos = new FileOutputStream("fos2.txt");

		// 调用write()方法
		//fos.write(97); //97 -- 底层二进制数据	-- 通过记事本打开 -- 找97对应的字符值 -- a
		// fos.write(57);
		// fos.write(55);
		
		//public void write(byte[] b):写一个字节数组
		byte[] bys={97,98,99,100,101};
		fos.write(bys);
		
		//public void write(byte[] b,int off,int len):写一个字节数组的一部分
		fos.write(bys,1,3);
		
		//释放资源
		fos.close();
	}
}

byte[]在字节流中的作用1

作为容器,通过fos.write(byte)写入数据,如写入整形,会在输出时转换成对应的字节 97-->a  48-->0  65-->A

/*
 * 一次读取一个字节数组:int read(byte[] b)
 * 返回值其实是实际读取的字节个数。
 */
public class FileInputStreamDemo2 {
	public static void main(String[] args) throws IOException {
		// 创建字节输入流对象
		// FileInputStream fis = new FileInputStream("fis2.txt");
		FileInputStream fis = new FileInputStream("FileOutputStreamDemo.java");

		
		byte[] bys = new byte[1024];
		int len = 0;
		while ((len = fis.read(bys)) != -1) {
			System.out.print(new String(bys, 0, len));
		}

		// 释放资源
		fis.close();
	}
}

byte[]在字节流中的作用2

通过作为容器的特点,进阶成缓冲区作用.

len = fis.read(bys)   包含两个动作:1.代表每次最多从目标文件中读取1024个字节. 2.返回每次读取多少个字节长度(由于read(bys)向bys写入的数据是覆盖的,并不是替换,所以必须要返回字节长度,避免输出以外的字节)

fis.read(bys) !=-1  表示当读取的目标文件到末尾了,没有剩余的字节了,就会返回-1,通过是否等于-1的判断,继续是否读取.

new String(bys,0,len) 表示每次把bys里面的数据,从0到len的长度读取出去,len控制了每次bys能读取到的字节长度,避免bys覆盖造成的错误.通过构造方法转换成字符串输出

 

猜你喜欢

转载自blog.csdn.net/qq_26514509/article/details/85029088
今日推荐