Java中IO操作的小感悟(原创)

Java中IO操作的小感悟

(文件复制的几种方法)

在有铁锹、车的情况下把一堆沙子运到目的地有几种方法?

答:有如下几种方法:

1、用铁锹铲上沙子走到目的地,一铁锹一铁锹的运输。(小样累不死你不算完)

2、用铁锹把沙子先铲到车子上,然后车子到底有多大?

   车子如果足够装下这堆沙子那最好,直接装车拉走。

   车子本身不够大不能装下这堆沙子,那就装车到目的地卸车然后回来,如此反复直到车子足够装下剩下的沙子为止。

实际上IO操作无非上面所述三种方法。小铁锹法、大卡车法、小车快跑法。

小铁锹法的具体实现:

File fileTarget = new File(targetPath);// 目标文件实例化

InputStream streamIn = new FileInputStream(fileSource);// 输入流,输入对象源文件(锁定沙堆位置)

OutputStream streamOut = new FileOutputStream(fileTarget);// 输出流,输出对象目标文件(锁定目的地位置)

int tempOneByte = 0;// 声明一个字节的缓存(亮出小铁锹)

// (在没把这堆沙子铲完之前,就循环往复的干吧)

while ((tempOneByte = streamIn.read()) > -1) {// 逐个字节读取,在输入流没有读到文件结尾时(开始干活,铲沙子)

streamOut.write(tempOneByte);// 逐个字节写入(把沙子放到目的地)

}

大卡车法的具体实现:

File fileTarget = new File(targetPath);// 目标文件实例化

byte[] tempContainer = new byte[(int) fileSource.length()];// 新建字节数组缓存源文件内容(找个能一次装下这堆沙子的大卡车来)

InputStream streamIn = new FileInputStream(fileSource);// 输入流,输入对象源文件(锁定沙堆位置)

streamIn.read(tempContainer);// 将源文件以输入流方式读入到字节数组(将沙子直接装车)

OutputStream streamOut = new FileOutputStream(fileTarget);// 输出流,输出对象目标文件(锁定目的地位置)

streamOut.write(tempContainer);// 将字节数组写入到目标文件(到地方了可以卸车了)

小车快跑法的实现:

File fileTarget = new File(targetPath);// 目标文件实例化

InputStream streamIn = new FileInputStream(fileSource);// 输入流,输入对象源文件(锁定沙堆位置)

OutputStream streamOut = new FileOutputStream(fileTarget);// 输出流,输出对象目标文件(锁定目的地位置)

byte[] buff = new byte[1024];// 声明1024字节的缓存(小车,这个车就只能装这么多东西了)

//(在没把这堆沙子铲完之前,就循环往复的干吧)

for (int i = 0; (i = streamIn.read(buff)) > 0;) {// 逐个缓存读取,再输入流到达结尾时i=-1不满足循环条件(开始装车了)

streamOut.write(buff);// 逐个缓存写入(到地方了,卸车)

}

*在大卡车法和小车快跑法中都没有看到小铁锹的身影。估计是语言的智能化简化了小铁锹这个过程吧。

以上是最近向跳河学习java.io时的一点小感悟和跟我一样的菜鸟一同分享。

转载于:https://www.cnblogs.com/ponyblog/archive/2011/12/16/2289629.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值