2010-04-08 70 views
0

我需要访问文件作为文本文件,并希望稍后处理它。但在我读取它之前,我如何识别我正在使用的文件只是一个文本文件。如果文件是另一种格式,我的整个代码错误地解释。我只想访问和处理文本文件。如何识别文件是一个文本文件或其他使用c#.net

目前我使用:

StreamReader objReader = new StreamReader(filePath); 

我如何在C#.NET这样做呢?

+0

什么是英语句子结构! – mauris 2010-04-08 06:00:31

回答

2

嗯,有启发,你可以申请:

  • 使用的文件扩展名。如果它是“.txt”,那么它可能是一个文本文件,如果它是“.jpg”,它可能不是,等等。
  • 如果您知道文件应该放入什么编码,请检查该编码是否有效
  • 检查文件开头的常见“神奇数字”,以识别各种众所周知的二进制文件类型
  • 如果它是用西方文件来检查,如果你将文件作为文本文件读取,大多数文件具有相对较低的Unicode值(通常小于U + 0100,但您可能想要查看各种Unicode代码图来自行确定)
  • 除了回车符之外,文本文件在U + 0020的下方往往不会有很多字符,换行和标签

但基本上它都是启发式的。在一天结束时,文件是一个名称和一些字节,以及一些关于访问权限的元数据。在某些文件系统中可以有更多的元数据可用,但是当复制文件时通常很难获取并且通常不会保留 - 所以不应该依赖于此。

0

如果文件是另一种格式,我的整个代码错误地解释。

当然,如果你期望一个文本文件并最终得到一个二进制文件,你的代码将错误地解释它。但是对于任何无效的文本文件,情况也是如此:如果在您期望的情况下它不是逗号分隔?或者不是json,那是你想要的?或者是在你无法处理的编码中?

问题是,除非你只是复制文本或者做一些低级别的事情,否则无论如何都需要比文本和二进制文件更多的检查。您应该(可能)检查整个文件是否符合您的需求。这将捕获传递到您的程序中的任何非文本文件!

相关问题