There is no difference, because If you look at the constructor where the string is transmitted, you will see the following:
public FileReader(String fileName) throws FileNotFoundException { super(new FileInputStream(fileName)); } public FileInputStream(String name) throws FileNotFoundException { this(name != null ? new File(name) : null); }
And here, where the file
public FileReader(File file) throws FileNotFoundException { super(new FileInputStream(file)); }
As you can see, in both cases the same constructor is called on the FileInputStream