java-IO流練習
阿新 • • 發佈:2018-01-21
ring 文件夾路徑 進行 文件名 abs 復制 nextline stream body
1.從鍵盤接收兩個文件夾路徑,把其中一個文件夾中(包含內容)拷貝到另一個文件夾中
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.Scanner; public class DirCopyDemo { public static void main(String[] args) throws IOException { Scanner s = new Scanner(System.in); System.out.println("輸入源目錄路徑"); String s1 = s.nextLine(); System.out.println("輸入目的目錄路徑"); String s2 = s.nextLine(); File from = new File(s1); File to = new File(s2); if(!to.exists()){ to.mkdirs(); } CopyDir(from, to); } private static void CopyDir(File from, File to) throws IOException { FileInputStream fis = null; FileOutputStream fos = null; File[] froms = from.listFiles(); int len=0; byte[] wj = new byte[1024]; for (File f : froms) { if (f.isDirectory()) { // 如果是文件夾,需要在to中創建一個名稱相同的文件夾, // 然後再遞歸到該文件夾裏面,復制相應的文件 // 對於創建的文件夾名稱,需要獲取到目的to絕對路徑,然後加上f的名稱 File newfile = new File(to.getAbsolutePath() + "\\" + f.getName()); newfile.mkdirs(); // 此處就需要進入新建的文件夾內部進行遞歸 // 這樣才能復制該文件夾內的文件 CopyDir(f, newfile); } else { // 在輸出目的to的文件名稱 需要先獲取到f的文件名稱 然後加上file2的絕對路徑 //這樣就能創建一個名稱相同的文件 fis = new FileInputStream(f); fos= new FileOutputStream(to.getAbsolutePath()+"\\"+f.getName()); while ((len = fis.read(wj)) != -1) { fos.write(wj, 0, len); fos.flush(); } fis.close(); fos.close(); } } } }
java-IO流練習