C# 返回位于包含文件夹的目录中的所有文件

问题描述

如何检索包含文件、子文件夹和该文件夹中的文件的目录中的所有文件

注意:文件夹/文件不是恒定的

解决方法

您可以将 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");
}