麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

java復(fù)制文件的4種方式及拷貝文件到另一個目錄下的實例代碼

2024-07-14 08:41:21
字體:
供稿:網(wǎng)友

盡管Java提供了一個可以處理文件的IO操作類。 但是沒有一個復(fù)制文件的方法。 復(fù)制文件是一個重要的操作,當你的程序必須處理很多文件相關(guān)的時候。 然而有幾種方法可以進行Java文件復(fù)制操作,下面列舉出4中最受歡迎的方式。 

1. 使用FileStreams復(fù)制

這是最經(jīng)典的方式將一個文件的內(nèi)容復(fù)制到另一個文件中。 使用FileInputStream讀取文件A的字節(jié),使用FileOutputStream寫入到文件B。 這是第一個方法的代碼: 

private static void copyFileUsingFileStreams(File source, File dest)     throws IOException {     InputStream input = null;     OutputStream output = null;     try {       input = new FileInputStream(source);       output = new FileOutputStream(dest);           byte[] buf = new byte[1024];           int bytesRead;           while ((bytesRead = input.read(buf)) > 0) {         output.write(buf, 0, bytesRead);       }   } finally {     input.close();     output.close();   } } 

正如你所看到的我們執(zhí)行幾個讀和寫操作try的數(shù)據(jù),所以這應(yīng)該是一個低效率的,下一個方法我們將看到新的方式。

2. 使用FileChannel復(fù)制

Java NIO包括transferFrom方法,根據(jù)文檔應(yīng)該比文件流復(fù)制的速度更快。 這是第二種方法的代碼: 

private static void copyFileUsingFileChannels(File source, File dest) throws IOException {       FileChannel inputChannel = null;       FileChannel outputChannel = null;     try {     inputChannel = new FileInputStream(source).getChannel();     outputChannel = new FileOutputStream(dest).getChannel();     outputChannel.transferFrom(inputChannel, 0, inputChannel.size());   } finally {     inputChannel.close();     outputChannel.close();   } } 

3. 使用Commons IO復(fù)制

Apache Commons IO提供拷貝文件方法在其FileUtils類,可用于復(fù)制一個文件到另一個地方。它非常方便使用Apache Commons FileUtils類時,您已經(jīng)使用您的項目。基本上,這個類使用Java NIO FileChannel內(nèi)部。 這是第三種方法的代碼: 

private static void copyFileUsingApacheCommonsIO(File source, File dest)     throws IOException {   FileUtils.copyFile(source, dest); } 

4. 使用Java7的Files類復(fù)制

如果你有一些經(jīng)驗在Java 7中你可能會知道,可以使用復(fù)制方法的Files類文件,從一個文件復(fù)制到另一個文件。 這是第四個方法的代碼: 

private static void copyFileUsingJava7Files(File source, File dest)     throws IOException {       Files.copy(source.toPath(), dest.toPath()); }

下面看下java拷貝文件到另一個目錄下的實現(xiàn)代碼,具體代碼如下所示:

package com.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;public class TestHtml {/** * 復(fù)制單個文件 * @param oldPath String 原文件路徑 如:c:/fqf.txt * @param newPath String 復(fù)制后路徑 如:f:/fqf.txt * @return boolean */ public void copyFile(String oldPath, String newPath) { try { int bytesum = 0; int byteread = 0; File oldfile = new File(oldPath); if (oldfile.exists()) { //文件存在時 InputStream inStream = new FileInputStream(oldPath); //讀入原文件 FileOutputStream fs = new FileOutputStream(newPath); byte[] buffer = new byte[1444]; int length; while ( (byteread = inStream.read(buffer)) != -1) { bytesum += byteread; //字節(jié)數(shù) 文件大小 System.out.println(bytesum); fs.write(buffer, 0, byteread); } inStream.close(); } } catch (Exception e) { System.out.println("復(fù)制單個文件操作出錯"); e.printStackTrace();}}/** * 復(fù)制整個文件夾內(nèi)容 * @param oldPath String 原文件路徑 如:c:/fqf * @param newPath String 復(fù)制后路徑 如:f:/fqf/ff * @return boolean */ public void copyFolder(String oldPath, String newPath) {try { (new File(newPath)).mkdirs(); //如果文件夾不存在 則建立新文件夾 File a=new File(oldPath); String[] file=a.list(); File temp=null; for (int i = 0; i < file.length; i++) { if(oldPath.endsWith(File.separator)){ temp=new File(oldPath+file[i]); } else{ temp=new File(oldPath+File.separator+file[i]); }if(temp.isFile()){ FileInputStream input = new FileInputStream(temp); FileOutputStream output = new FileOutputStream(newPath + "/" + (temp.getName()).toString()); byte[] b = new byte[1024 * 5]; int len; while ( (len = input.read(b)) != -1) { output.write(b, 0, len); } output.flush(); output.close(); input.close(); } if(temp.isDirectory()){//如果是子文件夾 copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]); } } } catch (Exception e) { System.out.println("復(fù)制整個文件夾內(nèi)容操作出錯"); e.printStackTrace();}}public static void main(String[] args)throws Exception {// //這是你的源文件,本身是存在的// File beforefile = new File("C:/Users/Administrator/Desktop/Untitled-2.html");//// //這是你要保存之后的文件,是自定義的,本身不存在// File afterfile = new File("C:/Users/Administrator/Desktop/jiekou0/Untitled-2.html");//// //定義文件輸入流,用來讀取beforefile文件// FileInputStream fis = new FileInputStream(beforefile);//// //定義文件輸出流,用來把信息寫入afterfile文件中// FileOutputStream fos = new FileOutputStream(afterfile);//// //文件緩存區(qū)// byte[] b = new byte[1024];// //將文件流信息讀取文件緩存區(qū),如果讀取結(jié)果不為-1就代表文件沒有讀取完畢,反之已經(jīng)讀取完畢// while(fis.read(b)!=-1){// //將緩存區(qū)中的內(nèi)容寫到afterfile文件中// fos.write(b);// fos.flush();// }String oldPath="C:/Users/Administrator/Desktop/Untitled-2.html";String newPath="C:/Users/Administrator/Desktop/jiekou0/Untitled-2.html";TestHtml t=new TestHtml();t.copyFile(oldPath, newPath);}}

總結(jié)

以上所述是小編給大家介紹的java復(fù)制文件的4種方式及拷貝文件到另一個目錄下的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 草妞视频 | 欧美成人精品一区二区男人小说 | 激情久久一区二区 | 免费黄色小视频网站 | www.17c亚洲蜜桃 | 精品一区二区久久久久久按摩 | 国产小视频在线 | 西川av在线一区二区三区 | xxx日本视频 | 亚洲第一成人在线视频 | 91欧美视频 | 欧美a级在线免费观看 | 国产在线观看91一区二区三区 | 亚洲第一成人在线视频 | 蜜桃一本色道久久综合亚洲精品冫 | 国产乱一区二区三区视频 | 香蕉久草在线 | 日韩区在线 | 孕妇体内谢精满日本电影 | 91精品国产91久久久久久丝袜 | 毛片大全免费看 | 欧美一级做a | 亚洲国产精品一 | 久久精品一区二区三区国产主播 | 亚洲国产高清一区 | av电影免费播放 | 成人毛片视频在线观看 | 成人18免费观看 | 中国大陆高清aⅴ毛片 | 在线成人免费观看www | 韩国精品久久久 | 久久精品操 | 99ri在线| 狠狠干伊人网 | 日韩.www | 色综合久久99 | japanesexxxxxxxhd| 久久久精品视频网站 | 色999中文字幕 | 亚洲成人精品区 | 草b视频在线观看 |