如何递归查询有多少个文件
① 请问linux下如何递归查找某个目录的所有文件
用find。
比如,我在根目录"/"下查找一个名字为”a.c“的文件:
find
/
-type
f
-name
"a.c"
-type
f
---说明我查找的是一个常规文件。
② java如何查询文件夹内有多少个文件
java的file类实现文件夹和文件的遍历,连隐藏的文件都能遍历
代码如下:
importjava.io.File;
/**
*java递归遍历文件夹和文件
*@authoryoung
*
*/
publicclassEX4_1
{
publicstaticvoidFindFile(Strings){
Filefile=newFile(s);
for(Stringtemp:file.list()){
Stringnewstr=s+"\"+temp;
if(newFile(newstr).isFile()){
System.out.println(newstr);
}else{
FindFile(newstr);
}
}
}
publicstaticvoidmain(Stringargs[])
{
FindFile("F:\workspace\one\src");//指定遍历的目录
}
}
③ 如何用递归获取一个文件夹内的所有文件存放在一个文件数组中
可以先读取出文件夹内的所有文件,读出来之后,放到一个文件中,然后再
用数据取出来。存到数组中,public
class
IOtest{
public
static
void
main(String
args){
String
str
=
"c:\\";//假设要读c盘中的所有文件,也可以自己写一个文件路径
File
f
=
new
File(str);
fun(f);
}
public
static
void
fun(File
f){
if(f.idDirectory()){
File
file
=
f.listFile();//列出所有目录
try{
for(int
i=0;
i<file.length;
i++){
fun(file);
}
}carch(Exception
e){
}else{
System.out.print(f);
}
}
}}上面这段代码是把目录下的文件全部列出来,你可以再写一个读取的
④ 指定一个目录,统计该目录中有多少个Java源文件。要求用递归实现
import java.io.File;
import java.util.regex.Pattern;
public class Tt {
private int sumFiles = 0;
private int sumDirs = 0;
public void countFiles(File file) {
try {
if (file.isDirectory()) {
sumDirs += 1;
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
countFiles(files[i]);
}
} else if (file.getName().matches("^.*\\.java$")) {
System.out.println(file.getPath()+"\\"+file.getName()+"\n");
sumFiles += 1;
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
public int getSumFiles() {
return sumFiles;
}
/**
* @param args
*/
public static void main(String[] args) {
Tt tt = new Tt();
File file = new File("D:\\android\\workplace");
tt.countFiles(file);
System.out.println(tt.getSumFiles());
}
}
⑤ JAVA遍历一个文件夹中的所有文件---(递归)
public void traverseFolder2(String path) {
File file = new File(path);
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
System.out.println("文件夹是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
traverseFolder2(file2.getAbsolutePath());
} else {
System.out.println("文件:" + file2.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}
(5)如何递归查询有多少个文件扩展阅读
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
foldeNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夹:" + file2.getAbsolutePath());
list.add(file2);
folderNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夹共有:" + folderNum + ",文件共有:" + fileNum);
}
⑥ 递归查找目录下所有指定文件(包括深层目录)
import java.io.*;
public class ShowAll {
public static void main(String[] args) throws Exception {
File f = new File("xxx");
if (f.isDirectory()) {
FileFilter filter = new MyFilter1();
File[] fs = f.listFiles(filter);
for (int i = 0; i < fs.length; i++) {
System.out.println(fs[i].getAbsolutePath());
}
}
}
}
class MyFilter1 implements FileFilter {
public boolean accept(File f) {
if (f.isDirectory()) {
FileFilter filter = new MyFilter1();
File[] fs = f.listFiles(filter);
for (int i = 0; i < fs.length; i++) {
System.out.println(fs[i].getAbsolutePath());
}
}
String name = f.getName();
if (name.indexOf(".hehe") == -1) return false;
else return true;
}
}
⑦ linux系统如何查看文件夹下有多少个文件
可以使用命令:
ls -R1 | grep [^/] | wc -l
ls -R(表示递归操作【可以继续显示子目录下的文件】)
-1(这个是数字1)【强迫ls命令以每个文件占一行的形式输出】
| (竖线)【叫管道可以把 一个程序的标准输出给另一个程序当标准输入】
grep 可以选取特定的行 [^/] 正则表达式 表示不要有/的行
wc -l (统计行数)
这样就可以知道目录下的文件数量了
⑧ 用递归统计文件数
用统计文件数做一个示范吧,VB的,先要在引用里加上Microsoft Scripting Runtime:
Function FileCount(d As Scripting.Folder) As Integer
FileCount=0
Dim flds As Scripting.Folders, fld As Scripting.Folder, fld2 As Scripting.Folder, Fles As Scripting.Files, Fle As Scripting.File
Set flds = d.SubFolders
For Each fld In flds
FileCount=FileCount+FileCount(fld)
Next
Set Fles = d.Files
For Each Fle In Fles
FileCount=FileCount+1
Next
End Function
那个Scripting.Folder类需要这样赋值:
Dim fs As New Scripting.FileSystemObject
Set fld = fs.GetFolder(文件夹路径)
另外,如果是NTFS格式文件系统,最好要考虑文件的访问权限问题