亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

我這個拷貝功能為什么沒有實現呢 ?反而源文件的內容被清空了

package com.File;

import java.io.*;

/**
* Created by Administrator on 2017\8\8 0008.
* 實現文件拷貝:用帶緩沖區的字節流來實現
* 寫入目標文件不需要判斷是否存在,如果不存在,則自動創建
*/
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));//默認緩沖區大小
? ? ? ?//BufferedInputStream bis= new BufferedInputStream(new FileInputStream(srcFile),20);指定緩沖區大小

? ? ? ?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();//這塊必須要刷新緩沖區,否則數據寫不進去
? ? ? ?}

? ? ? ?//完成操作之后,需要關閉
? ? ? ?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"));
? ?}
}

正在回答

3 回答

因為你的源文件和目標文件名稱一樣,所以在找目標文件時發現了和目標文件名稱一樣的源文件,就把源文件刪除了重新創建了一個文件,所以你的源文件就沒有了,老師視頻里面有講到,當你給出一個路徑時,如果沒有這個文件他會創建這個文件,如果存在這個文件他會把這個文件刪除再創建,如果你不想這個已經存在的文件被刪除,只是想要續寫他,需要再加一個true,如果我沒記錯應該是:new File("文件路徑",true),具體的你可以再聽一遍

2 回復 有任何疑惑可以回復我~

我試了一下可以實現啊,

? CopyFile.copyFile(new File("E:"+File.separator+"io.txt"),new File("E:"+File.separator+"hello.txt"));//這樣可以兼容不同的系統,不建議你那種寫法。

1 回復 有任何疑惑可以回復我~

CopyFile.copyFile(new File("D:\\U盤\\imooc\\Hello.txt"),new File("D:\\U盤\\imooc\\Hello.txt"));

第一個File是源文件,第二個File是copy之后生成的文件,在文件下面開始是沒有的。

至于為什么同一個文件copy時內容被刪就不知道了。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

我這個拷貝功能為什么沒有實現呢 ?反而源文件的內容被清空了

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號