Если вы посмотрите на различные классы файлового потока / чтения / записи, которые принимают либо String
, либо File
, вы увидите, что конструктор, который принимает String
, является перегрузкой удобства для конструктора, которыйзанимает File
.Другими словами, конструктор String
обычно создает File
из строки пути и вызывает другой конструктор.
Таким образом, использование версии File
потенциально экономит на создании новых объектов File.
С другой стороны, экземпляр File
будет занимать больше памяти, чем эквивалент String
, и стоимостьСоздание экземпляра File
невелико по сравнению со стоимостью открытия и чтения / записи файла.
Суть в том, что, вероятно, для мелкомасштабного приложения это не имеет значения с точки зрения производительности.Для крупномасштабного приложения наиболее подходящий подход зависит от того, что приложение на самом деле делает;например, постоянно ли он использует одни и те же файлы.
И, как говорится в комментариях, есть и другие способы "обозначать" файлы / пути;например, "file:" URL и класс Java 7 Path
.