InputStream和OutputStream

InputStream:

  • (1)int read() :一次读取一个字节,返回本次读取的字节的值
  • (2)int read(byte[] b) :一次读取多个字节,返回本次实际读取字节数,读取的字节存到b数组中,从[0]开始存储,一次最多读取b.length个字节
  • (3)int read(byte[] b, int off, int len) :一次读取多个字节,返回本次实际读取字节数,读取的字节存到b数组中,从[off]开始存储,一次最多读取len个字节
  • (4)close()
  • 如果到达流末尾,返回-1
  • 三、使用字节流,来读取纯文本文件
  • 步骤:
  • (1)选择IO流
  • (2)读/写
  • (3)关闭
public class Test06FileInputStream {
	public static void main(String[] args) throws IOException {
		//(1)选择IO流
		//这里故意选取字节流,因为字节流可以用于处理所有类型的问题
		FileInputStream fis = new FileInputStream("1.txt");
		
		//(2)读
		byte[] arr = new byte[10];
		int len;
		while((len = fis.read(arr)) != -1){
//			System.out.println(Arrays.toString(arr));
			
			//字节数组-->字符串  new String(byte[],off,len)
			System.out.println(new String(arr,0,len));//可能乱码
			//乱码的原因:本次读了10个字节,就用10个字节去组成字符串显示了,出现缺字节
		}
		
//		(3)关闭
		fis.close();
	}
}

OutputStream:

  • (1)void write(int b) :写一个字节
  • (2)void write(byte[] b) :写一个字节数组的所有
  • (3)void write(byte[] b, int off, int len) :写一个字节数组的部分
  • (4) void close()
  • (5)void flush()

这里再写一个copy的功能,可以copy任意类型的文件

public class TestCopy {
	@Test
	public void test02() throws IOException{
		copy("单身狗.jpg", "2.jpg");
	}
	
	@Test
	public void test01() throws IOException{
		copy("1.txt", "3.txt");
		/*
		 * 这里没有乱码,把1.txt的所有字节,全部复制到3.txt中,然后一起显示,没有缺字节
		 * 而且1.txt和3.txt的编码是一致的
		 */
	}
	
	//复制任意类型的文件的功能
	//任意类型的文件,只能选择字节流
	public void copy(String srcFilename , String destFilename) throws IOException{
		FileInputStream fis = new FileInputStream(srcFilename);
		FileOutputStream fos = new FileOutputStream(destFilename);
		
		byte[] arr = new byte[10];
		int len;
		//数据: srcFilename --> fis --> arr --> fos --> destFilename
		while((len = fis.read(arr)) !=-1){
			fos.write(arr, 0, len);
		}
		
		fis.close();
		fos.close();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值