See the question and my original answer on StackOverflow

It's difficult to define something so general. You would have to specify more what you really need, or the file type. Then you can have a look at the .NET Framework itself, there are a lot of "XXXReader" classes, for example:

  • BinaryReader
  • TextReader
  • StreamReader
  • StringReader
  • XmlReader
  • XmlTextReader
  • IDataReader
  • EventLogReader
  • XamlReader
  • EntityDataReader

And each one is really different from the others... Some are abstract, some aren't, etc...