java復制文件或文件夾
JDK寶典里有這樣的一段代碼,你調用File方法就可以了:
/**
* 復制單個文件, 如果目標文件存在,則不覆蓋。
* @param srcFileName 待復制的文件名
* @param destFileName 目標文件名
* @return 如果復製成功,則返回true,否則返回false
*/
public static boolean File(String srcFileName, String destFileName){
return CopyFileUtil.File(srcFileName, destFileName, false);
}
/**
* 復制單個文件
* @param srcFileName 待復制的文件名
* @param destFileName 目標文件名
* @param overlay 如果目標文件存在,是否覆蓋
* @return 如果復製成功,則返回true,否則返回false
*/
public static boolean File(String srcFileName,
String destFileName, boolean overlay) {
//判斷原文件是否存在
File srcFile = new File(srcFileName);
if (!srcFile.exists()){
System.out.println("復制文件失敗:原文件" + srcFileName + "不存在!");
return false;
} else if (!srcFile.isFile()){
System.out.println("復制文件失敗:" + srcFileName + "不是一個文件!");
return false;
}
//判斷目標文件是否存在
File destFile = new File(destFileName);
if (destFile.exists()){
//如果目標文件存在,而且復制時允許覆蓋。
if (overlay){
//刪除已存在的目標文件,無論目標文件是目錄還是單個文件
System.out.println("目標文件已存在,准備刪除它!");
if(!DeleteFileUtil.delete(destFileName)){
System.out.println("復制文件失敗:刪除目標文件" + destFileName + "失敗!");
return false;
}
} else {
System.out.println("復制文件失敗:目標文件" + destFileName + "已存在!");
return false;
}
} else {
if (!destFile.getParentFile().exists()){
//如果目標文件所在的目錄不存在,則創建目錄
System.out.println("目標文件所在的目錄不存在,准備創建它!");
if(!destFile.getParentFile().mkdirs()){
System.out.println("復制文件失敗:創建目標文件所在的目錄失敗!" );
return false;
}
}
}
//准備復制文件
int byteread = 0;//讀取的位數
InputStream in = null;
OutputStream out = null;
try {
//打開原文件
in = new FileInputStream(srcFile);
//打開連接到目標文件的輸出流
out = new FileOutputStream(destFile);
byte[] buffer = new byte[1024];
//一次讀取1024個位元組,當byteread為-1時表示文件已經讀完
while ((byteread = in.read(buffer)) != -1) {
//將讀取的位元組寫入輸出流
out.write(buffer, 0, byteread);
}
System.out.println("復制單個文件" + srcFileName + "至" + destFileName + "成功!");
return true;
} catch (Exception e) {
System.out.println("復制文件失敗:" + e.getMessage());
return false;
} finally {
//關閉輸入輸出流,注意先關閉輸出流,再關閉輸入流
if (out != null){
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in != null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Ⅱ 用Java編寫一個程序,將一個圖像文件復制到指定的文件夾中
這是我們公司基類里的一個方法希望對你有幫助。。/**
* 復制單個文件
* @param oldPath String 原文件路徑 如:c:/fqf.txt
* @param newPath String 復制後路徑 如:f:/fqf.txt
* @return boolean
*/
public void File(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; //位元組數 文件大小
// System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("復制單個文件操作出錯");
e.printStackTrace(); } }
Ⅲ java如何拷貝文件到另一個目錄下
下面列舉出4種方式:
1、使用FileStreams復制
這是最經典的方式將一個文件的內容復制到另一個文件中。 使用FileInputStream讀取文件A的位元組,使用FileOutputStream寫入到文件B。正如你所看到的我們執行幾個讀和寫操作try的數據,所以這應該是一個低效率的,下一個方法我們將看到新的方式。 這是第一個方法的代碼:
Ⅳ java如何拷貝一個文件夾內的多個指定的文件到另外一個指定的文件夾下
你好:
請看代碼:
/**
*把一個文件夾里的所有文件包括文件夾一並原樣拷貝到另一個目錄中;
*@authorshuishui
*/
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.io.OutputStream;
publicclassCopyDir001{
publicstaticFiledirFrom;
publicstaticFiledirTo;
//目標路徑創建文件夾
publicvoidlistFileInDir(Filefile){
File[]files=file.listFiles();
for(Filef:files){
Stringtempfrom=f.getAbsolutePath();
Stringtempto=tempfrom.replace(dirFrom.getAbsolutePath(),
dirTo.getAbsolutePath());//後面的路徑替換前面的路徑名
if(f.isDirectory()){
FiletempFile=newFile(tempto);
tempFile.mkdirs();
listFileInDir(f);
}else{
System.out.println("源文件:"+f.getAbsolutePath());
//
intendindex=tempto.lastIndexOf("\");//找到"/"所在的位置
StringmkdirPath=tempto.substring(0,endindex);
FiletempFile=newFile(mkdirPath);
tempFile.mkdirs();//創建立文件夾
System.out.println("目標點:"+tempto);
(tempfrom,tempto);
}
}
}
/**
*封裝好的文件拷貝方法
*/
publicvoid(Stringfrom,Stringto){
try{
InputStreamin=newFileInputStream(from);
OutputStreamout=newFileOutputStream(to);
byte[]buff=newbyte[1024];
intlen=0;
while((len=in.read(buff))!=-1){
out.write(buff,0,len);
}
in.close();
out.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args){
Filefromfile=newFile("e:\shui\test");//源文件夾
Filetofile=newFile("e:\Jying\shui");//目標
CopyDir001=newCopyDir001();
//設置來源去向
.dirFrom=fromfile;
.dirTo=tofile;
.listFileInDir(fromfile);
}
}
Ⅳ java中怎樣按位元組讀取文件並復制到另一個文件夾
這里以位元組流FileInputStream,FileOutputStream為例。代碼例子如下:
importjava.io.File;
/**
*把一個文件夾中的文件復制到一個指定的文件夾
*@authoryoung
*
*/
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
publicclassCopyFile{
publicstaticvoidmain(String[]args){
/*指定源exe文件的存放路徑*/
Stringstr="f:/jdk-1_5_0_06-windows-i586-p.exe";
/*指定復制後的exe的目標路徑*/
Stringstrs="e:/.exe";
/*創建輸入和輸出流*/
FileInputStreamfis=null;
FileOutputStreamfos=null;
try{
/*將io流和文件關聯*/
fis=newFileInputStream(str);
fos=newFileOutputStream(strs);
byte[]buf=newbyte[1024*1024];
intlen;
while((len=fis.read(buf))!=-1){
fos.write(buf,0,len);
}
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
try{
fis.close();
fos.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
}
Ⅵ Java代碼拷貝文件夾 注:復制文件夾
Java代碼復制文件夾時,則需要利用Flie類在目標文件夾中創建相應的目錄,並且使用遞歸方法,代碼如下:
importjava.io.*;
/**
*復制文件夾或文件夾
*/
publicclassCopyDirectory{
//源文件夾
staticStringurl1="F:/photos";
//目標文件夾
staticStringurl2="D:/tempPhotos";
publicstaticvoidmain(Stringargs[])throwsIOException{
//創建目標文件夾
(newFile(url2)).mkdirs();
//獲取源文件夾當前下的文件或目錄
File[]file=(newFile(url1)).listFiles();
for(inti=0;i<file.length;i++){
if(file[i].isFile()){
//復制文件
File(file[i],newFile(url2+file[i].getName()));
}
if(file[i].isDirectory()){
//復制目錄
StringsourceDir=url1+File.separator+file[i].getName();
StringtargetDir=url2+File.separator+file[i].getName();
Directiory(sourceDir,targetDir);
}
}
}
//復制文件
publicstaticvoidFile(FilesourceFile,FiletargetFile)
throwsIOException{
//新建文件輸入流並對它進行緩沖
FileInputStreaminput=newFileInputStream(sourceFile);
BufferedInputStreaminBuff=newBufferedInputStream(input);
//新建文件輸出流並對它進行緩沖
FileOutputStreamoutput=newFileOutputStream(targetFile);
BufferedOutputStreamoutBuff=newBufferedOutputStream(output);
//緩沖數組
byte[]b=newbyte[1024*5];
intlen;
while((len=inBuff.read(b))!=-1){
outBuff.write(b,0,len);
}
//刷新此緩沖的輸出流
outBuff.flush();
//關閉流
inBuff.close();
outBuff.close();
output.close();
input.close();
}
//復制文件夾
publicstaticvoidDirectiory(StringsourceDir,StringtargetDir)
throwsIOException{
//新建目標目錄
(newFile(targetDir)).mkdirs();
//獲取源文件夾當前下的文件或目錄
File[]file=(newFile(sourceDir)).listFiles();
for(inti=0;i<file.length;i++){
if(file[i].isFile()){
//源文件
FilesourceFile=file[i];
//目標文件
FiletargetFile=newFile(newFile(targetDir).getAbsolutePath()+File.separator+file[i].getName());
File(sourceFile,targetFile);
}
if(file[i].isDirectory()){
//准備復制的源文件夾
Stringdir1=sourceDir+"/"+file[i].getName();
//准備復制的目標文件夾
Stringdir2=targetDir+"/"+file[i].getName();
Directiory(dir1,dir2);
}
}
}
}