java遞歸實現(xiàn)復制一個文件夾下所有文件功能
今天開始學習java的IO,學了一個復制文件的例子程序后想自己實現(xiàn)以下如何復制一個文件夾,復制文件的例子程序如下:
package io.github.liuzhan214; import java.io.File; import java.io.IOException; public class Main { void solve() { File file = new File("F:\\javaIOTest\\new.txt"); if(!file.exists()) { try { file.createNewFile(); } catch(IOException e) { e.printStackTrace(); } } else { System.out.println(file.getName()); } File dir = new File("F:\\javaIOTest"); System.out.println(dir.getName()); if(dir.isDirectory()) { String[] filename = dir.list(); for(String str: filename) { File tempFile = new File(dir.getPath() + File.separator + str); if(tempFile.isFile()) { System.out.println("File: " + tempFile.getPath()); } else if(tempFile.isDirectory()) { System.out.println("Dir: " + tempFile.getPath()); } } } } public static void main(String[] args) { Main main = new Main(); main.solve(); } }
createNewFile可以創(chuàng)建一個文件
mkdir()可以創(chuàng)建一個目錄
FileInputStream和FileOutoutStream可以實現(xiàn)文件的復制
實現(xiàn)文件夾復制的代碼如下
package io.github.liuzhan214; import java.util.Scanner; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class Main { Scanner scanner = new Scanner(System.in); void solve() { String inputString = scanner.next(); String outputString = scanner.next(); File inputFile = new File(inputString); File outputFile = new File(outputString); if(inputFile.exists() == false || outputFile.exists() == false) { System.out.println("輸入或者輸出路徑不合法!"); return; } File sourceFile = inputFile; File destFile = new File(outputFile.getPath() + File.separator + inputFile.getName()); try { myCopy(sourceFile,destFile); } catch(Exception e) { System.out.println("復制出現(xiàn)錯誤!"); return; } System.out.println(sourceFile.getPath() + "->" + destFile.getPath() + "復制成功!"); } void myCopy(File sourceFile,File destFile) throws Exception{ //保證sourceFile一定存在,destFile一定不存在,因此先創(chuàng)建destFile if(sourceFile.isFile()) destFile.createNewFile(); else if(sourceFile.isDirectory()) destFile.mkdir(); if(sourceFile.isFile()) copy(sourceFile,destFile); else if(sourceFile.isDirectory()) { File[] files = sourceFile.listFiles(); for(File ele : files) { File newDestFile = new File(destFile.getPath() + File.separator + ele.getName()); myCopy(ele,newDestFile); } } } void copy(File sourceFile,File destFile) throws Exception{ //保證sourceFile一定存在,destFile一定存在 FileInputStream inputStream = new FileInputStream(sourceFile); FileOutputStream outputStream = new FileOutputStream(destFile); byte[] arr = new byte[256]; int len = 0; while((len = inputStream.read(arr)) > 0) { outputStream.write(arr, 0, len); } inputStream.close(); outputStream.close(); } void close() { scanner.close(); } public static void main(String[] args) { Main main = new Main(); main.solve(); main.close(); } }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java文件刪除不了File類的delete方法刪不掉文件的原因以及分析
這篇文章主要介紹了java文件刪除不了File類的delete方法刪不掉文件的原因以及分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06Java遍歷輸出指定目錄、樹形結(jié)構(gòu)所有文件包括子目錄下的文件
這篇文章主要介紹了Java遍歷輸出指定目錄、樹形結(jié)構(gòu)下的所有文件包括子目錄中的文件,需要的朋友可以參考下2015-07-07淺析final,finally,finalize 的區(qū)別
以下是對final,finally,finalize的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下2013-09-09java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)順序表示例
這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)實現(xiàn)順序表示例,需要的朋友可以參考下2014-03-03詳解Spring Cloud Alibaba Sidecar多語言微服務異構(gòu)
這篇文章主要介紹了詳解Spring Cloud Alibaba Sidecar多語言微服務異構(gòu),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11