qq_prisoner_4
2019-07-03 21:06
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();
}
}
我自己回答一下吧。read方法返回值赋给b不能在while体外,否则将执行无限循环。相当于b是给定的不为-1的值,而在while循环中,b是一直在检验的,检验输入流是否读取到文件末端。
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题
回答 3