为什么拷贝出来的文件这么大啊。。

来源:4-3 字节流之文件输出流FileOutputStream

qq_prisoner_4

2019-07-03 21:06

https://img2.mukewang.com/5d1ca781000182bd05950047.jpg

public static void copyFile(File srcFile,File destFile) throws IOException{

if(!srcFile.exists()) {

throw new IllegalArgumentException("文件名:"+srcFile+"不存在");

}

if(!srcFile.isFile()) {

throw new IllegalArgumentException(srcFile+"不是文件");

}

FileInputStream fis = new FileInputStream(srcFile);

FileOutputStream fos = new FileOutputStream(destFile);

byte[] buf = new byte[8*1024];

int b = fis.read(buf,0,buf.length);//读取数据放到字节数组里

while(b!=-1) {

fos.write(buf, 0, b);//写入数据到流

fos.flush();//最好写上

}

fis.close();

fos.close();

System.out.println("拷贝完毕");

}

public static void main(String[] args){

// TODO Auto-generated method stub

// FileUtils.listDirectory(new File("E:\\example"));

try {

IOUtil.copyFile(new File("E:\\example\\original.txt"), new File("E:\\example\\new.txt"));

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


写回答 关注

1回答

  • qq_prisoner_4
    2019-07-06 16:51:42

    我自己回答一下吧。read方法返回值赋给b不能在while体外,否则将执行无限循环。相当于b是给定的不为-1的值,而在while循环中,b是一直在检验的,检验输入流是否读取到文件末端。

文件传输基础——Java IO流

为您介绍IO流的使用,以及对象的序列化和反序列化的内容

133754 学习 · 1030 问题

查看课程

相似问题