疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

递归方法的使用(文件处理)


 

  Java开发中,递归方法是要谨慎使用的,尽量不使用更好,因为如果操作不当,或者程序异常,容易出现死循环。

  循环方法是我们最常用的方法,大家都用过for,while,do while等。就不一一说明了。

  还是说下递归,使用场景,删除文件和计算文件大小。

  1.文件大小,需求是计算文件大小

  大家都知道,在需要对文件做处理的时候,我们就要使用File 对象了,需要注意的是,File对象中的length()只对文件有效,如果是文件夹则返回为0

  代码如下

  public static long countFileDirLength(File file) {

  long size = 0;

  if(file != null) {

  if(file.exists()) {

  if(file.isDirectory()) {

  File[] list = file.listFiles();

  for(File f : list) {

  size += countFileDirLength(f);

  }

  } else {

  size = file.length();

  }

  }

  }

  return size;

  }

  上面的代码就是使用递归循环的方式,计算文件夹下面的所有文件的大小

  2.删除文件,需求是删除指定文件夹

  File对象中的delete()方法只对文件有效,如果是文件夹,则不能这样处理,这时还是需要使用递归的方法循环操作。

  代码如下

  public static void deleteFileDir(File file) {

  if (file != null) {

  if (file.isDirectory()) {

  File[] files = file.listFiles();

  for (File f : files) {

  deleteFile(f);

  }

  } else {

  file.delete();

  }

  }

  }

  这样就完成了需求。

  这样,递归的使用就给大家展示清楚了。