显示指定目录下文件所有文件的行数和文件的个数

 用到的主要知识点有:便利目录(递归)和统计文件行数函数
 
//递归显示目录下所有的文件
<html>
 <head></head>
 <body>
<?php
$files=0;
$lines=0; 
$di="f:/AppServ/www/xwgl";
function countLines($file){       //统计文件的行数
   
    return count(file($file));
 
 }
 
function dirSize($directory){     //自定义一个函数
if($dir_handle=opendir($directory)){   //打开目录并判断是否能成功打开
 while($filename=readdir($dir_handle)){  //遍历目录下所有文件
  
  if($filename!="."&&$filename!=".."){      //排除两个特殊目录“.”和“..”
   
   $subFile=$directory."/".$filename;         //将目录下的子文件和当前面目录相连
   if(is_dir($subFile)){                                 //如果为目录

    dirSize($subFile);                                 //递归的调用自身,将新目录作为形参
   }
   else{
    global $files,$lines;                //在一个function中引入外部的一个变量,一般情况下,这个外部的变量不通过参数传进来,
                                                 // 而是直接 通过global 引入进来。 而这个global却又没有全局化的意思,就是说用global进行声明,
                                                   //则可以调用函数外的变量。
    
      $files++;
       $lines += countLines($subFile);    //调用统计行数函数
            
    }
   
   }
  
  }
 closedir($dir_handle);
 
 }
 
}
dirSize($di);
 echo "该目录共计".$lines."行,总计".$files."个文件...<br>";
?>

</body>
</html>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个示例代码,可以实现统计一个文件夹中所有 java 文件个数,以及统计所有子文件夹中 java 文件中除去空行和只有空格的行数: ```java import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; public class JavaFileStats { private static int javaFileCount = 0; // 统计 java 文件个数 private static int totalLines = 0; // 统计所有 java 文件的总行数 private static int validLines = 0; // 统计所有 java 文件中除去空行和只有空格的行数 public static void main(String[] args) { File dir = new File("D:\\example"); // 指定要统计的文件夹 JavaFileStats.countJavaFiles(dir); System.out.println("Java file count: " + javaFileCount); System.out.println("Total lines: " + totalLines); System.out.println("Valid lines: " + validLines); } private static void countJavaFiles(File dir) { File[] files = dir.listFiles(); for (File file : files) { if (file.isFile() && file.getName().endsWith(".java")) { // 如果是 java 文件,统计文件个数,并计算文件行数和有效行数 javaFileCount++; countFileLines(file); } else if (file.isDirectory()) { // 如果是目录,递归遍历子文件夹 countJavaFiles(file); } } } private static void countFileLines(File file) { int lines = 0; int valid = 0; try (BufferedReader reader = new BufferedReader(new FileReader(file))) { String line; while ((line = reader.readLine()) != null) { lines++; if (!line.trim().isEmpty()) { valid++; } } } catch (IOException e) { e.printStackTrace(); } totalLines += lines; validLines += valid; } } ``` 在上面的示例中,我们使用递归的方式遍历指定文件夹下的所有文件和子文件夹。对于每个 java 文件,我们使用 `BufferedReader` 读取文件内容,并统计文件的总行数和有效行数。其中,有效行数指除去空行和只有空格的行数。 最后,我们输出统计结果,包括 java 文件个数、所有 java 文件的总行数、所有 java 文件中有效行数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值