以递归方式获取目录中的文件并读取它们

时间:2011-11-30 07:06:53

标签: c#-4.0

我想知道这里是否有人可以帮助我,因为我还是C#的新手。我有一个文件夹w /在文件夹中的驱动器都包含pdffiles。有没有办法递归循环文件并读取这些文件并将数据写入.txt文件 我不确定如何将这个实现到我的控制台应用程序中 - 所有人都有任何可能有帮助的代码吗?

我试过这个prgrm,但它的抛出错误为“c:\ anil未找到文件或资源。”

class Program
{

    static void Main(string[] args)
    {
        DirectoryInfo di = new DirectoryInfo(@"C:\anil");
        FileInfo[] pdfFiles = di.GetFiles("*.pdf", SearchOption.AllDirectories);
        foreach (FileInfo pdf in pdfFiles)
        {
            Console.Write(ReadFile(pdf.FullName));
        }
        Console.Read();
    }

    public static string ReadFile(string destfolder)
    { 
        foreach(string file in Directory.Enumeratefiles(destfolder,"*.pdf"))
        {
            PdfReader pdfreader = new PdfReader(destfolder); 
        }
        string pdfText = string.Empty;
        for (int i = 1; i <= pdfreader.NumberOfPages; i++)
        {
            ITextExtractionStrategy itextextStrat = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy(); 
            PdfReader reader = new PdfReader(Filename);
            String extractText = PdfTextExtractor.GetTextFromPage(reader, i, itextextStrat);
            extractText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(extractText)));
            pdfText = pdfText + extractText; reader.Close(); } return pdfText; 
        } 
    }
}

2 个答案:

答案 0 :(得分:0)

你必须

  1. 浏览目录树。有关示例,请参阅this
  2. 然后get the file(s)。您可以使用SearchOption来搜索子目录。
  3. 阅读pdf files(stackoverflow将有所帮助)并写入文本文件。
  4. P.S:如果你能给我们更多的信息,关于你尝试过什么/或者你是如何接近这个的。你会得到更具体的答案。

答案 1 :(得分:0)

该错误表明文件夹C:\anil不存在,或者运行该程序的帐户无权访问该文件夹。

至于你的代码 - 有几件事情可能成为问题。

您将传递到ReadFile的参数视为文件夹,但您传入的是文件名,而不是文件夹。

您的foreach循环仅适用于下一行,因为您没有在代码块{}中放置所需的所有内容:

  foreach(string file in Directory.Enumeratefiles(destfolder,"*.pdf"))
  {
      PdfReader pdfreader = new PdfReader(destfolder); 
      string pdfText = string.Empty;
      for (int i = 1; i <= pdfreader.NumberOfPages; i++)

      {
           ITextExtractionStrategy itextextStrat = new iTextSharp.text.pdf.parser.SimpleTextExtractionStrategy(); 
           PdfReader reader = new PdfReader(Filename);
           String extractText = PdfTextExtractor.GetTextFromPage(reader, i, itextextStrat);
           extractText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(extractText)));
           pdfText = pdfText + extractText; reader.Close(); } return pdfText; 

      } 
  }