java有关文件传输的read以及write方法——丑九怪

java有关文件传输的read以及write方法——丑九怪

涉及处理文件的操作,简单说一下read方法和write方法,简单的不提了,相信大家在使用的时候,会碰到两个三参的方法,至于用法,且听我娓娓道来
  • read(byte[] b, int off, int len);
    用来从调用他的stream处,向缓冲区写数据

第一个参数 : 很明显,这是一个buffer,一个缓冲区
第二个参数 :这里可以理解为偏移量,也就是说,你想从这个缓冲区的第几个字 节开始存放读入的数据,你就写几,但是一般情况下默认我们都写0
第三个参数 :一次性可以读入的最大字节数。网传的64K,其实不然,我觉得这个还是自己调试,只要不比前面给出来的缓冲区大,且快就行
返回值:返回成功写入缓存区的字节数
注:第二个参数,如果设置为m,那么第三个参数最大设置为(缓冲区大小-m),否则会出现IndexOutOfBoundsException异常,就是说你接收的数据超出了缓存区

  • write(byte[] b, int off, int len)
    用来从调用他的stream处,将缓存区的数据发出

第一个参数:这还是一个缓冲区
第二个参数:偏移量,表示你要从缓冲区的第几个字节出开始发出数据,一样,默认我们都写0
第三个参数:一次性可以发出的最大字节数,一般设置为缓冲区大小,当然也要注意第二个参数的设置,一定不能超出缓冲区的大小
返回值:返回成功发出的字节数

public static final int BUFFER_SIZE = 5;
	File fileIn = new File("./src/lib/验证.txt");
	File fileOut = new File("./src/lib/newFile.txt");
	
	try {
		FileInputStream fis = new FileInputStream(fileIn);
		FileOutputStream fos = new FileOutputStream(fileOut);

这是你要看的代码,可以看出,我在向新文件中写入时,将缓冲区的第一个字节绕过去了,也就是说,才每次写入的时候,都会少掉缓冲区的第一个字节

		byte[] buffer = new byte[BUFFER_SIZE];
			int len = fis.read(buffer, 0, BUFFER_SIZE);
			while (len != -1) {
				fos.write(buffer, 1, len - 1);
				len = fis.read(buffer, 0, BUFFER_SIZE);
		}
	fis.close();
		fos.close();
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}

上面代码的运行结果,如图所示
在这里插入图片描述
可以看出,我的缓冲区大小为5个字节,每次读文件时会取出五个字节,写文件时会忽略掉第一个字节,形成了这种情况
有关read的尝试,大家可以自己进行验证

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值