为什么会出现错误,将夜COPY2复制错误。

为什么会出现错误,将夜COPY2复制错误。

package project3_8_4filedemo_copy;


import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;


public class CopyDemo {


public static void main(String[] args) throws FileNotFoundException {

// 不使用缓冲流的方式复制文件

FileInputStream fis = null;

FileOutputStream fos = null;

FileOutputStream fos1 = null;

try {

fis = new FileInputStream("将夜.txt");

fos = new FileOutputStream("将夜copy.txt");

long start01 = System.currentTimeMillis();

int n = 0;

while ((n = fis.read()) != -1) {

fos.write(n);

}

fos.close();

long end01 = System.currentTimeMillis();

System.out.println("非缓冲流方式复制文件用时:" + (end01 - start01));

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// 使用缓冲流的方式复制文件


BufferedInputStream bis = new BufferedInputStream(new FileInputStream("将夜.txt"));

BufferedOutputStream bos = new BufferedOutputStream(fos1);

long start02 = System.currentTimeMillis();

try {

fos1 = new FileOutputStream("将夜copy2.txt");

int i = 0;

byte[] b = new byte[1024];

while ((i = bis.read(b)) != -1) {

bos.write(b, 0, i);

bos.flush();

}

fos1.close();

fis.close();

bos.close();

bis.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

long end02 = System.currentTimeMillis();

System.out.println("非缓冲流方式复制文件用时:" + (end02 - start02));

}


}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕雪 2018-12-12 11:42:03

http://img1.sycdn.imooc.com//climg/5c10832100012f9308920823.jpg

1)程序有编译性的错误,是因为你没把上图第一个红框放在try中,你没有捕获它的异常,它是会抛出

FileNotFoundException异常的。2)关闭文件流时要先开后关的原则。例如:bos是依赖fos1而存在的,所以只能先关bos再关fos1。也就是说第二个和第三个红框的位置需要交换一下。祝:学习愉快


  • 提问者 Daisy3924553 #1
    您好,我按照您说的修改了,还是有空指针异常错误。
    2018-12-12 11:50:25
  • 好帮手慕雪 回复 提问者 Daisy3924553 #2
    注意:fos1 = new FileOutputStream("将夜copy2.txt"); 要在BufferedOutputStream bos = new BufferedOutputStream(fos1); 上方。如果还有空指针,请把错误贴一下,以方便跟踪
    2018-12-12 13:45:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师