平時寫代碼怕電腦出問題,需要備份到U盤,每次都手動打開復(fù)制好麻煩,于是就用Java寫了個文件拷貝的jar包,用批處理執(zhí)行。
1、編寫程序
程序執(zhí)行的時候需要傳入兩個參數(shù),分別是源路徑和目的路徑。這樣便于拷貝不同的文件夾。
package cn.baicai.ioStream;
import java.io.*;
public class CopyFile {
static int nums=0;
public static void main(String[] args) throws Exception {
int len= args.length;
if (len!=2){
System.out.println("請輸入原文件夾和目的文件夾,以空格分開");
}
else {
System.out.println("開始復(fù)制");
String src=args[0];
String des=args[1];
copyDirectory(src,des);
System.out.println("共復(fù)制了"+nums+"個文件,復(fù)制完畢");
}
}
public static void copyDirectory(String src,String des) throws Exception{
// 初始化源文件夾
File fileSrc=new File(src);
// 初始化目標文件夾
File fileDes=new File(des);
// 獲得文件中的所有文件
File[] files=fileSrc.listFiles();
// 如果目標文件夾不存在,則創(chuàng)建
if (!fileDes.exists()){
fileDes.mkdirs();
}
// 遍歷所有文件
for (File file :
files) {
// 如果是文件就復(fù)制
if (file.isFile()) {
copyFile(file.getAbsolutePath(),des+"\\"+file.getName());
// 如果是文件夾就遞歸調(diào)用
}else if (file.isDirectory()){
copyDirectory(file.getAbsolutePath(),des+"\\"+file.getName());
}
}
}
public static void copyFile(String src,String des) throws Exception{
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(src));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(des));
byte[] buffer=new byte[2048];
int len=0;
while ((len=bis.read(buffer))!=-1){
bos.write(buffer,0,len);
}
bos.close();
bis.close();
System.out.println(src+"\t復(fù)制完畢");
nums+=1;
}
}
2、生成jar包。

生成jar包

選擇主函數(shù)

設(shè)置名字,確認即可

選Artifacts

build即可
3、編寫腳本文件
后面跟的是源、目的文件夾。
@echo off
java -jar IOStream.jar C:\Users\bai\Desktop\新建文件夾 C:\Users\bai\Desktop\新建
pause
另存為bat,注意Windows默認編碼不是utf-8,要切換成ANSI,這個會根據(jù)不同的國家更換,中國就是GBK編碼。

另存文件,切換編碼方式
4、運行bat程序
大功告成了

運行成功