Если предположить, что writeFancyData - это черный ящик, это невозможно. В качестве мысленного эксперимента рассмотрим реализацию writeFancyData, которая сделала что-то вроде этого:
public void writeFancyData(File file, Data data){
File localFile = new File(file.getPath());
...
// process data from file
...
}
Учитывая, что единственную вещь, которую вы можете вернуть из любой расширенной версии File, это имя пути, вы просто не сможете получить нужные данные в этот метод. Если бы в подписи был какой-то поток, вы бы оказались в гораздо лучшем положении, но, поскольку все, что вы можете передать, это Файл, это сделать невозможно.
На практике реализация, вероятно, является одним из классов FileInputStream или FileReader, которые действительно используют объект File только для имени, а затем вызывают собственные методы, чтобы получить дескриптор файла и обработать фактический ввод / вывод.