📄 fileoper.java
字号:
package io.file;
import java.io.File;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Copy;
import org.apache.tools.ant.taskdefs.Delete;
import org.apache.tools.ant.taskdefs.MatchingTask;
import org.apache.tools.ant.taskdefs.Mkdir;
import org.apache.tools.ant.taskdefs.Move;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;
import org.apache.tools.ant.types.FilterSet;
/*
* antAPI的文件操作
*/
public class FileOper {
private final static String FILE_EXTENSION_SEPARATOR = "."; //文件名中扩展名前面的分隔符
private static Project prj=new Project();
public static void main(String[] args){
//String srcFile ="E:/users/admin/Desktop/tmp/temp/超级书虫队——于丹论语心得!.ppt";
//String srcDir ="D:/testAnt/111/ccss";
String srcDir= "E:/Work/hnisi/襄樊劳动/07实施/05系统发布/01系统版本";
String toDir = "D:/testAnt/333";
String fileSetInc = "11*/*";
String fileSetExc = "**/CVS,**/*.class"; //排除CVS相关文件,以及.class文件
long t = System.currentTimeMillis();
createFolder(srcDir);
//zip(srcDir,toDir,fileSetInc,fileSetExc);
//move(srcDir,toDir,fileSetInc,fileSetExc);
//del(srcDir,"dir","","");
System.out.println("time used: "+ (System.currentTimeMillis() - t) + "ms");
}
/*
* 创建一个文件夹
*/
public static void createFolder(String dirPath){
Mkdir mkdir=new Mkdir();
mkdir.setProject(prj);
mkdir.setDir(new File(dirPath));
mkdir.execute();
}
private static void setDeleteSetting(Delete delOpe,String strDel,String strFileSrc,String fileSetInc,String fileSetExc){
//strDel选项为: file、dir 表示删除文件、目录
try {
delOpe.setProject(prj);
File srcFile = new File(strFileSrc);
//设置文件源
if(strDel.equalsIgnoreCase("file")){ //只删除文件
if(srcFile.isDirectory()){
FileSet fileSet=new FileSet();
fileSet.setDir(srcFile);
fileSet.setIncludes(fileSetInc);
fileSet.setExcludes(fileSetExc); //排除
delOpe.addFileset(fileSet);
}else if(srcFile.isFile()){
delOpe.setFile(srcFile);
}else{
delOpe.setFile(srcFile);
}
}else{ //删除目录及下面的文件
delOpe.setDir(srcFile);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 删除文件或者文件夹
*/
public static void del(String strFileSrc,String strDel,String fileSetInc,String fileSetExc){
Delete delete=new Delete();
setDeleteSetting(delete,strDel,strFileSrc,fileSetInc,fileSetExc);
delete.execute();
}
private static void setCopySetting(Copy copyOpe,String strFileSrc,String strFileTo,String fileSetInc,String fileSetExc,boolean blnOverwrite){
try {
copyOpe.setOverwrite(blnOverwrite);
copyOpe.setProject(prj);
File srcFile = new File(strFileSrc);
File toFile = new File(strFileTo);
//设置文件源
if(srcFile.isDirectory()){
FileSet fileSet=new FileSet();
fileSet.setDir(srcFile);
fileSet.setIncludes(fileSetInc);
fileSet.setExcludes(fileSetExc); //排除CVS相关文件,以及.class文件
copyOpe.addFileset(fileSet);
}else if(srcFile.isFile()){
copyOpe.setFile(srcFile);
}else{
copyOpe.setFile(srcFile);
}
//设置目的地
if(toFile != null ){
if(!toFile.exists()){
try {
if(toFile.getName().indexOf(FILE_EXTENSION_SEPARATOR)>-1){ //如果是文件
copyOpe.setTofile(toFile);
}else{ //如果是目录
copyOpe.setTodir(toFile);
}
} catch (Exception e) {
e.printStackTrace();
}
}else{
if(toFile.isDirectory()){
copyOpe.setTodir(toFile);
}else if(toFile.isFile()){
copyOpe.setTofile(toFile);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* copy一个文件或文件夹到指定位置
*/
public static void copy(String strFileSrc,String strFileTo,String fileSetInc,String fileSetExc,boolean blnOverwrite){
Copy copy=new Copy();
setCopySetting(copy,strFileSrc,strFileTo,fileSetInc,fileSetExc,blnOverwrite);
copy.execute();
}
/*
* 将符合条件的那些文件中的 指定字符串【两边带有@@符号】替换成某字符串,COPY到指定的地方
* 注意:要COPY的地方不能与COPY源的目录相同,即自己不能覆盖自己,即使blnOverwrite 为true
* 如将@good@ 替换成 goodluck
*/
//使用:replaceStr("D:/testAnt","D:/testAnt1","**/*.xml","good","goodluck",true)
public static void replaceStr(String strFileSrc,String strFileTo,String fileSetInc,String fileSetExc,String srcStr,String toStr,boolean blnOverwrite){
Copy copy = new Copy();
setCopySetting(copy,strFileSrc,strFileTo,fileSetInc,fileSetExc,blnOverwrite);
FilterSet filter=copy.createFilterSet();
filter.addFilter(srcStr,toStr);
copy.execute();
}
/*
* move一个文件或文件夹到指定位置
* ? move中设置blnOverwrite没有任何效果,总是覆盖
*/
public static void move(String strFileSrc,String strFileTo,String fileSetInc,String fileSetExc){
Move move=new Move();
setCopySetting(move,strFileSrc,strFileTo,fileSetInc,fileSetExc,true);
move.execute();
}
private static void setZipSetting(Zip zipOpe,String strFileSrc,String strFileTo,String fileSetInc,String fileSetExc){
try {
zipOpe.setProject(prj);
File srcFile = new File(strFileSrc);
File toFile = new File(strFileTo);
//设置文件源
if(srcFile.isDirectory()){
FileSet fileSet=new FileSet();
fileSet.setDir(srcFile);
fileSet.setIncludes(fileSetInc);
fileSet.setExcludes(fileSetExc); //排除CVS相关文件,以及.class文件
zipOpe.addFileset(fileSet);
}else if(srcFile.isFile()){
}else{
}
//设置目的地
if(toFile != null ){
if(!toFile.exists()){
try {
if(toFile.getName().indexOf(FILE_EXTENSION_SEPARATOR)>-1){ //如果是文件
zipOpe.setDestFile(toFile);
}else{ //如果是目录
}
} catch (Exception e) {
e.printStackTrace();
}
}else{
if(toFile.isDirectory()){
}else if(toFile.isFile()){
zipOpe.setDestFile(toFile);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 压缩文件
*/
public static void zip(String strFileSrc,String strFileTo,String fileSetInc,String fileSetExc){
Zip zip=new Zip();
setZipSetting(zip,strFileSrc,strFileTo,fileSetInc,fileSetExc);
zip.execute();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -