【发布时间】:2016-02-16 04:15:48
【问题描述】:
我正在做一个从本地硬盘读取所有文件的项目, 我指定了我想在搜索中包含的扩展名。
所有选择的文件扩展名都基于文件是文本内容这一事实。
所以为了我的使用,我可以指定要考虑哪些扩展, 比如 .cs .html .htm .css .js 等'
如果我想添加一个可以让普通用户选择扩展的功能怎么办? 并让他从所有可用的 Windows 文件扩展名中进行选择,但在该列表中仅包含他系统中的那些文本文件。 例如我们知道exe,mp3。 mpg、avi 不是 但他可能有一些我们没有考虑到的其他类型的文件(.extensions)。
有没有办法根据系统文件属性来决定, 如果不是什么方法只过滤文本内容文件?
【问题讨论】:
-
没有什么好的方法可以做到这一点......所以,“尝试阅读,如果你能理解内容,它就是文本”是“最好的”。您可以考虑搜索“检测不带扩展名的文件类型”(或类似内容)以了解以前关于该主题的讨论。
-
扩展仅提供文件内容的微弱指示。我敢打赌,有些应用程序也使用
.cs扩展名,但这些文件不包含文本。 -
我认为没有,至少不是通用的。例如:word 文件的扩展名 docx 不是文本,docx 文件是压缩的 XML 文件。但作为用户,您可能希望将 word 文件视为文本。
-
@DirkTrilsbeek
docx,doc可以通过 .Net 专用类解析,因此它应该被视为文本,因为您已经写入它并且您也可以解析它 -
@JbobJohan 这正是我的意思。没有基于文件本身的通用方法来确定文件是否包含文本内容。因为在我的示例中,docx 包含文本内容,但从技术角度来看,它不是文本。当然,您可以阅读 doc/docx,但是其他许多类似但您不知道的格式呢?你无法解释你还没有听说过的东西。
标签: c# string algorithm file text