我想知道这里是否有人可以帮助我,因为我还是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;
}
}
}
答案 0 :(得分:0)
你必须
SearchOption
来搜索子目录。答案 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;
}
}