各位问个问题啊,关于文件夹操作的,某个文件夹下面还有许多文件夹,而这些文件夹下面有许多个文件,如何找到不包含某个指定文件的文件夹(比如找到不包含doc文件的文件夹)并且把此文件夹删除?这个文件看一下,这个是文件夹下面找到doc格式的文件就把整个文件夹删除掉的程序,怎么才能改成没有找到doc格式的文件就把整个文件夹删掉呢?
import java.io.File;
import java.io.IOException;public class DeleteAll
{
public static void main(String args[])
{
// DeleteAll t = new DeleteAll();
FindFiles(new String[]
{ "F:\\test\\2222" });
}
public static void FindFiles(String[] str)
{
if (str.length == 0)
str = new String[]{ ".." };
File pathName = new File(str[0]);
if (pathName.exists())
{
String[] fileNames = pathName.list();
for (int i = 0; i < fileNames.length; i++)
{
File f = new File(pathName.getPath(), fileNames[i]);
try
{
if (f.isDirectory())
{
FindFiles(new String[]{f.getCanonicalPath()});
}
else
{
if (f.getCanonicalPath().endsWith(".doc"))
{
String path=f.getCanonicalPath();
System.out.println(path);
delFolder(path);
System.out.println("deleted"+path);
}
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
// 删除文件夹
// param folderPath 文件夹完整绝对路径
public static void delFolder(String folderPath)
{
try
{
delAllFile(folderPath); // 删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); // 删除空文件夹
}
catch (Exception e)
{
e.printStackTrace();
}
}
// 删除指定文件夹下所有文件
// param path 文件夹完整绝对路径
public static boolean delAllFile(String path)
{
boolean flag = false;
File file = new File(path);
if (!file.exists())
{
return flag;
}
if (!file.isDirectory())
{
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++)
{
if (path.endsWith(File.separator))
{
temp = new File(path + tempList[i]);
}
else
{
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile())
{
temp.delete();
}
if (temp.isDirectory())
{
delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);// 再删除空文件夹
flag = true;
}
}
return flag;
}
}
import java.io.File;
import java.io.IOException;public class DeleteAll
{
public static void main(String args[])
{
// DeleteAll t = new DeleteAll();
FindFiles(new String[]
{ "F:\\test\\2222" });
}
public static void FindFiles(String[] str)
{
if (str.length == 0)
str = new String[]{ ".." };
File pathName = new File(str[0]);
if (pathName.exists())
{
String[] fileNames = pathName.list();
for (int i = 0; i < fileNames.length; i++)
{
File f = new File(pathName.getPath(), fileNames[i]);
try
{
if (f.isDirectory())
{
FindFiles(new String[]{f.getCanonicalPath()});
}
else
{
if (f.getCanonicalPath().endsWith(".doc"))
{
String path=f.getCanonicalPath();
System.out.println(path);
delFolder(path);
System.out.println("deleted"+path);
}
}
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
// 删除文件夹
// param folderPath 文件夹完整绝对路径
public static void delFolder(String folderPath)
{
try
{
delAllFile(folderPath); // 删除完里面所有内容
String filePath = folderPath;
filePath = filePath.toString();
java.io.File myFilePath = new java.io.File(filePath);
myFilePath.delete(); // 删除空文件夹
}
catch (Exception e)
{
e.printStackTrace();
}
}
// 删除指定文件夹下所有文件
// param path 文件夹完整绝对路径
public static boolean delAllFile(String path)
{
boolean flag = false;
File file = new File(path);
if (!file.exists())
{
return flag;
}
if (!file.isDirectory())
{
return flag;
}
String[] tempList = file.list();
File temp = null;
for (int i = 0; i < tempList.length; i++)
{
if (path.endsWith(File.separator))
{
temp = new File(path + tempList[i]);
}
else
{
temp = new File(path + File.separator + tempList[i]);
}
if (temp.isFile())
{
temp.delete();
}
if (temp.isDirectory())
{
delAllFile(path + "/" + tempList[i]);// 先删除文件夹里面的文件
delFolder(path + "/" + tempList[i]);// 再删除空文件夹
flag = true;
}
}
return flag;
}
}
解决方案 »
- new创建了对象数组1个,为什么10个对象没有一个启动构造函数?
- Hibernate中怎么写mysql语句?
- java发送邮件失败
- 再问个正则表达式问题
- weblogic 8.1 配置连接 sql server2005 追分提问
- 关于GUI设计窗体上中文的显示问题?
- 有一个文件有大量数据(几十万)条记录,内存问题暂不考虑,请问用什么数据结构和算法可以最快的查找到随机的一条记录。
- java基础题关于StringBuffer,求教
- 一个关于applet的题目,是scjp的,帮忙看看。谢谢
- java套接字编程
- java仿windows图片查看器制作问题.....
- jsp+ajax处理返回xml格式文件
楼主【zhuyedeqingqing】截止到2008-06-27 20:20:12的历史汇总数据(不包括此帖):
发帖数:3 发帖分:220
结贴数:3 结贴分:220
未结数:0 未结分:0
结贴率:100.00% 结分率:100.00%
敬礼!
改成
if(!f.getCanonicalPath().endsWith(".doc"))
包括删除路径等!
import java.io.*;
import java.util.*;
public class qdb
{
private boolean control=true;
private String s;
public qdb(File f,String s)
{
this.s=s;
method(f);
}
private class Q implements FilenameFilter
{
boolean b=false;
public boolean accept(File f,String FileName)
{
int i=FileName.indexOf(".");
if(i!=-1)
{
FileName=FileName.substring(i+1);
if(FileName.equals(s))
{
b=true;
}
}
return b;
}
}
public boolean method(File f)
{
String[] s=f.list(new Q());
if(s.length!=0)
{
System.out.println(Arrays.toString(s));
control=false;
}
return control;
}
public void delete(File f)
{
if(control)
{
if(f.isDirectory())
{
File[] fs=f.listFiles();
if(fs.length==0)
{
f.delete();
System.out.println(f.toString()+"文件夹被删除");
}
else
{
for(int i=0;i<fs.length;i++)
{
delete(fs[i]);
}
}
}
else
{
f.delete();
System.out.println(f.toString()+" 文件被删除");
}
}
else
{
System.out.println("所以此文件夹无须删除");
}
}
public static void main(String[] args)throws Exception
{
File f=new File("f:/qdb");
qdb q=new qdb(f,"txt");
q.delete(f);
}
}
5楼的正在研究中
6楼,我的意思是留下包含doc文件的文件夹,删除掉缺少doc文件的文件夹
import java.io.*;
public class Test_File {
public static void do1(String dir){
File f=new File(dir);
String[] flist=f.list();
boolean isf=true;
for(int i=0;i<flist.length;i++){
File tf=new File(dir+"/"+flist[i]);
if(tf.isDirectory()){
do1(dir+"/"+flist[i]);
}
else{
if(tf.getName().indexOf(".doc")!=-1){
//f.delete();
System.out.println("get it and delete it! --"+f.getPath());
}
}
}
}
public static void main(String[] args){
do1("e:/temp");
}
}
e:/t1/下有t2,t3两个文件夹
t2无doc文件,t3中有,那t1要不要删掉???
import java.io.*;
public class Test_File {
public static void do1(String dir){
System.out.println("dir="+dir);
File f=new File(dir);
String[] flist=f.list();
boolean isf=false;
boolean hf=true;
if(flist.length==0)
hf=false;
for(int i=0;i<flist.length;i++){
File tf=new File(dir+"/"+flist[i]);
if(tf.isDirectory()){
do1(dir+"/"+flist[i]);
}
else{
if(tf.getName().indexOf(".doc")!=-1){
isf=true;
}
}
}
if(!isf && !hf){
System.out.println(f.getPath()+" no");
}
}
public static void main(String[] args){
do1("e:/temp");
}
}
import java.util.*;
public class qdb
{
private String ss;
public qdb(String s)
{
this.ss=s;
}
public void delete(File f)
{
File[] fs=f.listFiles();
if(fs.length==0&&fs!=null)
{
f.delete();
}
else
{
for(int i=0;i<fs.length;i++)
{
if(fs[i].isDirectory())
{
delete(fs[i]);
}
else
{
String s=fs[i].getName();
if((s.indexOf(ss))==-1)
{
fs[i].delete();
}
}
}
}
}
public static void main(String[] args)throws Exception
{
File f=new File("f:/qdb");
qdb q=new qdb("txt");
q.delete(f);
}
}
这个~LZ也不说说明白点
System.out.println(f.getPath()+" no");
}
这里的f就是你要删掉的文件夹
我的思想是反复的读这个文件目录,当读到文件夹时,判断里面有没有子文件夹,如果有,再接着读,
只有当读到一个文件夹,它的内部都是文件时,再进行是否含有.doc文件的判断,如果没有的话,就删掉这个文件夹,如果有,接着判断下面的,
1这个目录下面只有3和4两个文夹, 没有doc文件, 那就直接删掉了, 不会判断3,4目录了吧???
if (f.getCanonicalPath().endsWith(".doc"))
{
break;
}
else
{String path=f.getCanonicalPath();
System.out.println(path);
delFolder(path);
System.out.println("deleted"+path);}