各位好,需求大致是这样的
由于业务量,
每天在某个文件夹下大概会增加1200个文件,平均大小为200K左右
在一个月大概就会存储1200*30 = 36000个文件现在有要求就是一个月清理一次
我使用的代码是ArrayList<File> files = getFiles(); // 此处加载了所有的文件
for(File file : ArrayList){
if(file.exists() && file.isFile()){
file.delete();
}
}
这样下来的话,每次删除都要循环3W多次?
效率是否会很慢?还有,如果我可以采用直接清除文件夹的方案,请问代码如何实现?
谢谢
由于业务量,
每天在某个文件夹下大概会增加1200个文件,平均大小为200K左右
在一个月大概就会存储1200*30 = 36000个文件现在有要求就是一个月清理一次
我使用的代码是ArrayList<File> files = getFiles(); // 此处加载了所有的文件
for(File file : ArrayList){
if(file.exists() && file.isFile()){
file.delete();
}
}
这样下来的话,每次删除都要循环3W多次?
效率是否会很慢?还有,如果我可以采用直接清除文件夹的方案,请问代码如何实现?
谢谢
file.delete();
file.mkdir();
思路是先删除文件夹,再创建文件夹。
if(file.exists() && file.isDirectory()){
file.delete();
}
使用delete()方法的时候,如果该目录下不为空,则无法删除的
public void del(File file){
if(file.listFiles()==null){
file.delete();
return;
}else{
File[] files = file.listFiles();
for(File f: files){
del(f);
}
}
}
不一定好使
如果是Linux服务器下,最好写Shell脚本 rm命令删除
import java.io.File;
public class DeleteFile{
public static void main(String[]args)throws Exception{
if(args==null||args.length<2){throw new RuntimeException("参数不对");}
String filePath=args[0];//查找目录
String fileName=args[1];//要删除的目录名
searchFile(new File(filePath),fileName);
}
public static void searchFile(File f,String name){
if(f.getName().equals(name)){
deleteFile(f);
}else if(!f.isFile()){
File[] files=f.listFiles();
for(int i=0;i<files.length;i++){
searchFile(files[i],name);
}
}
}
public static void deleteFile(File fi){
if(fi.isFile()){
fi.delete();
}else{
File[] files=fi.listFiles();
for(int i=0;i<files.length;i++){
deleteFile(files[i]);
}
fi.delete();
}
}
}
Runtime runtime = Runtime.getRuntime();
String[] args = new String[] {"cmd.exe", "/c", "rd c:\\xxx /q /s"};
Process proc = runtime.exec(args);linux
Runtime runtime = Runtime.getRuntime();
String[] args = new String[] {"sh", "-c", "rm -f -r /usr/dir"};
Process proc = runtime.exec(args);