问题描述
如何检索包含文件、子文件夹和该文件夹中的文件的目录中的所有文件。
解决方法
您可以将 DirectoryInfo.GetFiles
方法与 RecurseSubdirectories
选项一起使用。
import java.util.ArrayList;
import java.util.Scanner;
public class NumberOpsDriver {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
ArrayList<NumberOperations> numOpsList = new ArrayList<NumberOperations>();
System.out.println("Enter a list of positive integers separated" +
" with a space followed by 0:");
int n=-1;
while (n!=0)
{
n = in.nextInt();
if(n!=0)
{
//add to list
numOpsList.add(new NumberOperations(n));
}
}
int index=0;
while (index < numOpsList.size())
{
NumberOperations num = numOpsList.get(index);
System.out.println("For: "+num);
System.out.println("\tOdds under: "+num.oddsUnder());
System.out.println("\tPowers of 2 under: "+num.powersTwoUnder());
index++;
}
}
}
如果您不需要完整的文件列表,枚举目录的内容可能会更快。
using System.IO;
FileInfo[] files
= new DirectoryInfo(@"C:\Program Files")
.GetFiles("*",new EnumerationOptions { RecurseSubdirectories = true });
,
您可以使用 Directory.GetFiles(path) 和 Directory.GetDirectories(path)
static void ScanDir(string path,int spaces = 0)
{
var files = Directory.GetFiles(path);
foreach (var file in files)
{
for (int i = 0; i < spaces; i++)
Console.Write(" "); // Just for styling
Console.WriteLine(file);
}
var dirs = Directory.GetDirectories(path);
foreach (var dir in dirs)
{
ScanDir(dir,spaces + 4);
}
}
static void Main()
{
ScanDir("C:\\path\\to");
}