packagecom.xuanwu.mtoserver.util;
importjava.io.*;
/**
*@authorToby复制文件夹或文件夹
*/
publicclassFileUtil{
publicstaticvoidmain(Stringargs[])throwsIOException{
//源文件夹
Stringurl1="D:/user/test/";
//目标文件夹
Stringurl2="D:/user/testcopy/";
//创建目标文件夹
(newFile(url2)).mkdirs();
//获取源文件夹当前下的文件或目录
File[]file=(newFile(url1)).listFiles();
for(inti=0;i<file.length;i++){
if(file[i].isFile()){
//复制文件
Stringtype=file[i].getName().substring(file[i].getName().lastIndexOf(".")+1);
if(type.equalsIgnoreCase("txt"))//转码处理
copyFile(file[i],newFile(url2+file[i].getName()),MTOServerConstants.CODE_UTF_8,MTOServerConstants.CODE_GBK);
else
copyFile(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();
copyDirectiory(sourceDir,targetDir);
}
}
}
//复制文件
publicstaticvoidcopyFile(FilesourceFile,FiletargetFile)throwsIOException{
BufferedInputStreaminBuff=null;
BufferedOutputStreamoutBuff=null;
try{
//新建文件输入流并对它进行缓冲
inBuff=newBufferedInputStream(newFileInputStream(sourceFile));
//新建文件输出流并对它进行缓冲
outBuff=newBufferedOutputStream(newFileOutputStream(targetFile));
//缓冲数组
byte[]b=newbyte[1024*5];
intlen;
while((len=inBuff.read(b))!=-1){
outBuff.write(b,0,len);
}
//刷新此缓冲的输出流
outBuff.flush();
}finally{
//关闭流
if(inBuff!=null)
inBuff.close();
if(outBuff!=null)
outBuff.close();
}
}
//复制文件夹
publicstaticvoidcopyDirectiory(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());
copyFile(sourceFile,targetFile);
}
if(file[i].isDirectory()){
//准备复制的源文件夹
Stringdir1=sourceDir+"/"+file[i].getName();
//准备复制的目标文件夹
Stringdir2=targetDir+"/"+file[i].getName();
copyDirectiory(dir1,dir2);
}
}
}
/**
*
*@paramsrcFileName
*@paramdestFileName
*@paramsrcCoding
*@paramdestCoding
*@throwsIOException
*/
publicstaticvoidcopyFile(FilesrcFileName,FiledestFileName,StringsrcCoding,StringdestCoding)throwsIOException{//把文件转换为GBK文件
BufferedReaderbr=null;
BufferedWriterbw=null;
try{
br=newBufferedReader(newInputStreamReader(newFileInputStream(srcFileName),srcCoding));
bw=newBufferedWriter(newOutputStreamWriter(newFileOutputStream(destFileName),destCoding));
char[]cbuf=newchar[1024*5];
intlen=cbuf.length;
intoff=0;
intret=0;
while((ret=br.read(cbuf,off,len))>0){
off+=ret;
len-=ret;
}
bw.write(cbuf,0,off);
bw.flush();
}finally{
if(br!=null)
br.close();
if(bw!=null)
bw.close();
}
}
/**
*
*@paramfilepath
*@throwsIOException
*/
publicstaticvoiddel(Stringfilepath)throwsIOException{
Filef=newFile(filepath);//定义文件路径
if(f.exists()&&f.isDirectory()){//判断是文件还是目录
if(f.listFiles().length==0){//若目录下没有文件则直接删除
f.delete();
}else{//若有则把文件放进数组,并判断是否有下级目录
FiledelFile[]=f.listFiles();
inti=f.listFiles().length;
for(intj=0;j<i;j++){
if(delFile[j].isDirectory()){
del(delFile[j].getAbsolutePath());//递归调用del方法并取得子目录路径
}
delFile[j].delete();//删除文件
}
}
}
}
}
分享到:
相关推荐
C#复制文件夹(及文件夹下所有子文件夹和文件),非常好用,用来做文件拷贝系统很实用,可以遍历,另外还有进度条
VBA编写的复制文件夹工具
复制文件夹及里面的文件。 使用SHFileOperation函数进行操作, 会弹出系统进度条,用户交互较友好。
Python 批量复制文件夹,不复制里面的内容 使用教学:https://blog.csdn.net/weixin_44291381/article/details/116229784
按txt的文件夹名,批量复制到指定目录
复制文件或者文件夹,可以复制文件夹里所有东西,包括文件夹里的文件夹里的文件夹的文件,无限循环往复,和windows资源管理器的复制一样
可重复执行复制文件夹及子文件夹里的文件,保证目的文件夹与原有文件夹内容同步更新
Windows 上的 xcopy 居然不可以实现 不覆盖文件复制文件夹 我用python实现了 参数 write_exists True: 覆盖 False: 不覆盖
由于公司限制,只能用VBS做的更新EXCEL UI
vc++复制目录
ruby复制文件夹,各类文件夹的操作
1,填写需要复制的文件夹或文件 2,填写需要复制进去的路径,一行一个 3,是进度条 4,都填写完毕后点击 复制 注意: 1,被复制文件夹 不能放桌面。因为我们的程序以精简为目的,不会获取更多权限。所以只能放...
文件夹复制病毒,文件夹隐藏。此软件详细说明如何处理文件夹复制病毒以及文件夹隐藏恢复方法
实现linux下文件夹的复制,C语言编写。
Java中实现复制文件或文件夹Java中实现复制文件或文件夹Java中实现复制文件或文件夹
VB 复制文件夹 VB 复制文件夹 VB 复制文件夹
文件夹复制(复制指定文件夹下所有内容以及文件复制工具
将对应file.txt和两个.bat文件放在需要复制或剪切的文件夹下,将需要复制或剪切的文件夹或文件名写入file.txt中,双击运行其中一个.bat即可复制或剪切txt里的文件夹或文件至E:\123文件夹中。
在工作中遇到的问题,结合网上的各方资料现整理出此脚本! 此脚本在PB环境中已经测试通过,请放心使用,如有疑问请密我!
复制文件复制文件复制文件复制文件复制文件夹