Make sure that you agree with yourself wether this is a service or business entity.
A service is usually recognized in that it uses a set of business entities to get some task done and that it does not itself maintain durable data.
A business entity is a unit in your problem domain, something you would conceptually like to persist.
If you find that it is a service, you should somehow inject the dependency when you construct the service.
Typically it could have a constructor like this:
public MyService(IFileObject)
When constructed from main:
var service = new MyService(MyRealFile)
When constructed from Test setup:
var service = new MyService(MyMockedFiled)
If you find that what you are testing is actually a business entity, then you should avoid giving the Entity a dependency. You typically do this be taking one step back and construct a Service class between yourself and the business entity. The service explicitly hands the business entity all its necessary data. In your case, this means that the service provides the entity with whatever it is supposed to learn by reading the file.
The Service is thus the one with the dependency to the file system and may even use another (dedicated) filereader business entity to read the file. You would never like business entities to make rogue dependency calls if you use it somewhere else in the system. Their code becomes context bound, which is something you would like to avoid. Business entites shall be fast, discrete, defined and responsive.
Your unit test shall be to the service, which may receive a dependency by injection. If you find that you are unit testing a business entity, then you are lacking the service level.