рекурсивно получать файлы в каталоге и читать их - PullRequest
0 голосов
/ 30 ноября 2011

Мне было интересно, может ли кто-нибудь здесь помочь мне, так как я все еще очень плохо знаком с C #.У меня есть диск с папками ж / в папках, которые все содержат 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 голосов
/ 30 ноября 2011

Ошибка предполагает, что папка 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; 

      } 
  }
0 голосов
/ 30 ноября 2011

Вам нужно будет

  1. пройти по дереву каталогов.См. this для примера.
  2. Затем получить файл (s).Вы можете использовать SearchOption для поиска в подкаталогах.
  3. Прочитать pdf файлы (stackoverflow поможет) и записать в текстовый файл.

PS: Если бы вы могли дать нам больше информации, о том, что вы пытались / или как вы подошли к этому.Вы получите более конкретные ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...