通過(guò)輸入輸出流解決此問(wèn)題,具體的可以查看JDK的API,實(shí)在不會(huì)的話,百度一下應(yīng)該都有一堆這方面的代碼。
創(chuàng)新互聯(lián)公司長(zhǎng)期為上1000+客戶(hù)提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為張家口企業(yè)提供專(zhuān)業(yè)的做網(wǎng)站、網(wǎng)站建設(shè),張家口網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
一個(gè)簡(jiǎn)單的方式就是調(diào)用cmd命令,使用windows自帶的功能來(lái)替你完成這個(gè)功能
我給你寫(xiě)個(gè)例子
import java.io.*;
public class test{
public static void main(String[] args){
BufferedReader in = null;
try{
// 這里你就當(dāng)作操作對(duì)dos一樣好了 不過(guò)cmd /c 一定不要?jiǎng)?/p>
Process pro = Runtime.getRuntime().exec("cmd /c copy d:\\ReadMe.txt e:\\");
in = new BufferedReader(new InputStreamReader(pro.getInputStream()));
String str;
while((str = in.readLine()) != null){
System.out.println(str);
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(in != null){
try{
in.close();
}catch(IOException i){
i.printStackTrace();
}
}
}
}
}
工具/原料
一臺(tái)配置了java環(huán)境的電腦
一款適合自己的開(kāi)發(fā)集成環(huán)境,這里用的是eclipse Kepler
文件拷貝DEMO
1.首先,理清思路,然后我們?cè)賱?dòng)手操作。
拷貝,有源文件,和目的文件。
如果原文件不存在,提示,報(bào)錯(cuò)。
如果目的文件不存在,創(chuàng)建空文件并被覆蓋。
如果目的地址,也即目的路徑不存在,創(chuàng)建路徑。
拷貝,輸入流,輸出流,關(guān)閉流。
拷貝前輸出文件大小,計(jì)算拷貝大小,比較并核實(shí)。輸出。
2.首先呢,先判斷傳參是否完整。
如果不夠兩個(gè)參數(shù),或者多于兩個(gè)參數(shù),提示錯(cuò)誤。
如果目標(biāo)文件不存在,創(chuàng)建 空文件繼續(xù)復(fù)制。
3.在開(kāi)始前,輸出被拷貝的源文件的大小。
4.獲得文件名稱(chēng),即短名。也即路徑下的文件全名(包括文件擴(kuò)展名)。
5.拷貝的關(guān)鍵,這里用的簡(jiǎn)單的緩沖流。從源文件到目的文件。
number of bytes copied 即是對(duì)拷貝長(zhǎng)度的累計(jì),直到拷貝完成,輸出。
6.將步驟二中的判斷并拷貝文件的代碼寫(xiě)在一個(gè)main函數(shù)中,
執(zhí)行拷貝,拷貝完成。結(jié)果拷貝大小和源文件大小一致,成功。
7.在執(zhí)行前,記得輸入?yún)?shù)。
如果是使用命令提示符,執(zhí)行 javac CopyFile.java 之后,
執(zhí)行 java CopyFile [源文件長(zhǎng)名] [目的文件長(zhǎng)名]
如果是使用的eclipse,在運(yùn)行前設(shè)置一下運(yùn)行參數(shù),完成后點(diǎn)擊運(yùn)行,如下圖。
P.S. 這里面的所謂“長(zhǎng)名”是指完整絕對(duì)路徑+文件名+文件類(lèi)型擴(kuò)展名
這里的源文件及目的文件的名稱(chēng)分別為:
E:/IP_Data.rar 和 D:/testFiles/IP_Data.rar
END
Java代碼復(fù)制文件夾時(shí),則需要利用Flie類(lèi)在目標(biāo)文件夾中創(chuàng)建相應(yīng)的目錄,并且使用遞歸方法,代碼如下:
import?java.io.*;??
/**?
*?復(fù)制文件夾或文件夾?
*/??
public?class?CopyDirectory?{??
//?源文件夾???
static?String?url1?=?"F:/photos";??
//?目標(biāo)文件夾???
static?String?url2?=?"D:/tempPhotos";??
public?static?void?main(String?args[])?throws?IOException?{??
//?創(chuàng)建目標(biāo)文件夾???
(new?File(url2)).mkdirs();??
//?獲取源文件夾當(dāng)前下的文件或目錄???
File[]?file?=?(new?File(url1)).listFiles();??
for?(int?i?=?0;?i??file.length;?i++)?{??
if?(file[i].isFile())?{??
//?復(fù)制文件???
copyFile(file[i],new?File(url2+file[i].getName()));??
}??
if?(file[i].isDirectory())?{??
//?復(fù)制目錄???
String?sourceDir=url1+File.separator+file[i].getName();??
String?targetDir=url2+File.separator+file[i].getName();??
copyDirectiory(sourceDir,?targetDir);??
}??
}??
}??
//?復(fù)制文件???
public?static?void?copyFile(File?sourceFile,File?targetFile)???
throws?IOException{??
//?新建文件輸入流并對(duì)它進(jìn)行緩沖???
FileInputStream?input?=?new?FileInputStream(sourceFile);??
BufferedInputStream?inBuff=new?BufferedInputStream(input);??
//?新建文件輸出流并對(duì)它進(jìn)行緩沖???
FileOutputStream?output?=?new?FileOutputStream(targetFile);??
BufferedOutputStream?outBuff=new?BufferedOutputStream(output);??
//?緩沖數(shù)組???
byte[]?b?=?new?byte[1024?*?5];??
int?len;??
while?((len?=inBuff.read(b))?!=?-1)?{??
outBuff.write(b,?0,?len);??
}??
//?刷新此緩沖的輸出流???
outBuff.flush();??
//關(guān)閉流???
inBuff.close();??
outBuff.close();??
output.close();??
input.close();??
}??
//?復(fù)制文件夾???
public?static?void?copyDirectiory(String?sourceDir,?String?targetDir)??
throws?IOException?{??
//?新建目標(biāo)目錄???
(new?File(targetDir)).mkdirs();??
//?獲取源文件夾當(dāng)前下的文件或目錄???
File[]?file?=?(new?File(sourceDir)).listFiles();??
for?(int?i?=?0;?i??file.length;?i++)?{??
if?(file[i].isFile())?{??
//?源文件???
File?sourceFile=file[i];??
//?目標(biāo)文件???
File?targetFile=new?File(new?File(targetDir).getAbsolutePath()+File.separator+file[i].getName());??
copyFile(sourceFile,targetFile);??
}??
if?(file[i].isDirectory())?{??
//?準(zhǔn)備復(fù)制的源文件夾???
String?dir1=sourceDir?+?"/"?+?file[i].getName();??
//?準(zhǔn)備復(fù)制的目標(biāo)文件夾???
String?dir2=targetDir?+?"/"+?file[i].getName();??
copyDirectiory(dir1,?dir2);??
}??
}??
}??
}