我這個(gè)拷貝功能為什么沒(méi)有實(shí)現(xiàn)呢 ?反而源文件的內(nèi)容被清空了
package com.File;
import java.io.*;
/**
* Created by Administrator on 2017\8\8 0008.
* 實(shí)現(xiàn)文件拷貝:用帶緩沖區(qū)的字節(jié)流來(lái)實(shí)現(xiàn)
* 寫入目標(biāo)文件不需要判斷是否存在,如果不存在,則自動(dòng)創(chuàng)建
*/
public class CopyFile {
? ?public static void copyFile(File srcFile,File dstFile)throws IOException{
? ? ? ?if(!srcFile.exists()){
? ? ? ? ? ?//拋出異常
? ? ? ? ? ?throw new IllegalArgumentException("文件:"+srcFile+"不存");
? ? ? ?}
? ? ? ?if(!srcFile.isFile()){
? ? ? ? ? ?//拋出異常
? ? ? ? ? ?throw new IllegalArgumentException("不是文件");
? ? ? ?}
? ? ? ?BufferedInputStream bis= new BufferedInputStream(new FileInputStream(srcFile));//默認(rèn)緩沖區(qū)大小
? ? ? ?//BufferedInputStream bis= new BufferedInputStream(new FileInputStream(srcFile),20);指定緩沖區(qū)大小
? ? ? ?BufferedOutputStream ois=new BufferedOutputStream(new FileOutputStream(dstFile));
? ? ? // BufferedOutputStream ois2=new BufferedOutputStream(new FileOutputStream(dstFile),20);
? ? ? ?int c;
? ? ? ?while((c=bis.read())!=-1){
? ? ? ? ? ? ? ?ois.write(c);
? ? ? ? ? ? ? ?ois.flush();//這塊必須要刷新緩沖區(qū),否則數(shù)據(jù)寫不進(jìn)去
? ? ? ?}
? ? ? ?//完成操作之后,需要關(guān)閉
? ? ? ?bis.close();
? ? ? ?ois.close();
? ?}
? ?public static void main(String[] args)throws IOException {
? ? ? ?CopyFile.copyFile(new File("D:\\U盤\\imooc\\Hello.txt"),new File("D:\\U盤\\imooc\\Hello.txt"));
? ?}
}
2017-10-07
因?yàn)槟愕脑次募湍繕?biāo)文件名稱一樣,所以在找目標(biāo)文件時(shí)發(fā)現(xiàn)了和目標(biāo)文件名稱一樣的源文件,就把源文件刪除了重新創(chuàng)建了一個(gè)文件,所以你的源文件就沒(méi)有了,老師視頻里面有講到,當(dāng)你給出一個(gè)路徑時(shí),如果沒(méi)有這個(gè)文件他會(huì)創(chuàng)建這個(gè)文件,如果存在這個(gè)文件他會(huì)把這個(gè)文件刪除再創(chuàng)建,如果你不想這個(gè)已經(jīng)存在的文件被刪除,只是想要續(xù)寫他,需要再加一個(gè)true,如果我沒(méi)記錯(cuò)應(yīng)該是:new File("文件路徑",true),具體的你可以再聽(tīng)一遍
2017-08-10
我試了一下可以實(shí)現(xiàn)啊,
? CopyFile.copyFile(new File("E:"+File.separator+"io.txt"),new File("E:"+File.separator+"hello.txt"));//這樣可以兼容不同的系統(tǒng),不建議你那種寫法。
2017-08-08
CopyFile.copyFile(new File("D:\\U盤\\imooc\\Hello.txt"),new File("D:\\U盤\\imooc\\Hello.txt"));
第一個(gè)File是源文件,第二個(gè)File是copy之后生成的文件,在文件下面開(kāi)始是沒(méi)有的。
至于為什么同一個(gè)文件copy時(shí)內(nèi)容被刪就不知道了。