題目:復(fù)制一個(gè)文件夾下面的文件,使用InputStream和OutputStream方法;
思路:
1、創(chuàng)建兩個(gè)對象,將舊被復(fù)制的源文件file1和新復(fù)制過來的生成文件file2;
2、調(diào)用自定義復(fù)制方法;
自定義方法:a)舊被復(fù)制文件為空,不存在,不是文件;
b)新復(fù)制文件夾不存在,創(chuàng)建該路徑;
c)開始一個(gè)字節(jié)一個(gè)字節(jié)順序復(fù)制傳輸(系統(tǒng)自己保證順序傳輸)
3、加入程序運(yùn)行時(shí)間;
package A_January;import java.io.*;/** * Created by Administrator on 17-1-19. */public class FileTest2 { public static void main(String[] args) { //實(shí)現(xiàn)一個(gè)文件的拷貝; //將源文件f1復(fù)制到f2目錄中; //文件存放目錄,真假不知;這里僅僅是路徑(目錄); // 存在不存在不一定,也有人被中介要求填寫信息,隨口編了一個(gè)假的地址; File file1=new File("E://玉置浩二 - 上を向いて歩こう.mp3"); File file2=new File("E://電影//☆中國電影//玉置浩二 - 上を向いて歩こう.mp3");//第2個(gè)文件路徑; long startTime=System.currentTimeMillis();//程序開始時(shí)間,用以記錄程序開始時(shí)間(按照毫秒計(jì)) copyFile(file1,file2);//調(diào)用下文中,自定義的copyFile方法; long endTime=System.currentTimeMillis();//程序結(jié)束時(shí)間;用以記錄程序結(jié)束時(shí)間; System.out.PRintln(endTime-startTime);//輸出時(shí)間差,計(jì)算程序運(yùn)行時(shí)間; }//自定義copy復(fù)制方法;public static void copyFile(File fileFrom,File fileTo){ //如果源文件為空||不存在||不是文件夾; if (fileFrom==null||!fileFrom.exists()||!fileFrom.isFile()){ System.out.println("拷貝失敗"); return;//結(jié)束,跳出,返回; } File parent=new File(fileTo.getParent());//定義父目錄 // 如果父文件夾不存在; if (!parent.exists()){ //創(chuàng)建該文件夾; parent.mkdirs(); } FileInputStream fis=null; FileOutputStream fos=null; try { //為文件類型分配內(nèi)存空間; fis=new FileInputStream(fileFrom); fos=new FileOutputStream(fileTo); //讀取 fis.read();//讀取一個(gè)字節(jié) //全真循環(huán); while(true){ //系統(tǒng)從輸入流讀取數(shù)據(jù),然后向輸出流寫出數(shù)據(jù); int data=fis.read(); fos.write(data); //當(dāng)讀取的字節(jié)為-1時(shí)候,(系統(tǒng)默認(rèn)-1是輸入流和輸出流的結(jié)尾),程序結(jié)束,停止全真循環(huán); if(data==-1){ break; } } System.out.println("拷貝成功"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}復(fù)制成功后:
如果你在運(yùn)行該軟件,再次復(fù)制,會報(bào)錯(cuò):
新聞熱點(diǎn)
疑難解答