[C++语法语义探讨] 一道难懂的笔试题

jakey0613 2009-03-02
我朋友问我一道笔试题:
试完成一个函数,它递归枚举给定的目录,并将所有的.bak文件删除。但是,所有名为svn的目录将被跳过。
看了很久我都不知道说的是什么意思?请大家帮忙解解!
jakey0613 2009-03-02
各位大侠,来看看,该怎么解决啊!!!
weiqiang.yang 2009-03-03
这个看不懂?不会吧?
就是给你一个目录,比如d:\\source\\然后你枚举这个目录下的文件夹和文件,删除文件名以.bak结尾的文件,碰到svn目录就跳过,其他目录的话就进入递归。。。然后重复上述操作
fun(dirname)
{
    //列举所有文件
    //删除.bak文件
    //列举所有子文件夹
    for(所有子文件夹)
    {
       //如果子文件夹名字为svn,跳过
       fun(subdirname)//递归
    }
}
weiqiang.yang 2009-03-03
不好意思。。不会写c++代码了。。
jakey0613 2009-03-05
谢谢啊,不过能不能具体点呢?
jakey0613 2009-03-05
实在是看不明白,知道的写明白些,先谢谢了!
jakey0613 2009-03-05
如果用java可以做的话,也可以用java做做
lupingui 2009-03-05
/**
 * 递归枚举给定的目录,并将所有的.bak文件删除。但是,所有名为svn的目录将被跳过。
 * lupingui
 * @param path
 * 2009-3-5
 */
public static void deleteFile(String path){
	//如果传入的目录为空则直接退出
	if (path == null){
		return;
	}
			
	File dir = new File(path);
	//如果传入的目录不存在或者不是目录则直接退出
	if (!dir.exists() || !dir.isDirectory()){
		return;
	}
	//如果目录本身就是SVN目录则直接退出
	if (dir.getName().toLowerCase().equals("svn")){
		return;
	}
	
	//循环目录下所有文件进行处理
	for (File file : dir.listFiles()){
		if (file.isFile()){//如果是文件
			//如果是".bak"文件则删除
			if (file.getName().toLowerCase().endsWith(".bak")){
				file.delete();
			}
		}else if (file.isDirectory()){//如果是目录
			//如果不是SVN文件夹
			if (!file.getName().toLowerCase().endsWith("svn")){
				deleteFile(file.getPath());
			}
		}
	}
}
szgaea 2009-03-06
写得真不错
geminiyellow 2009-03-06
……怎么看着像java版的
Global site tag (gtag.js) - Google Analytics