Использование класса String или File при работе с файлами - PullRequest
0 голосов
/ 12 февраля 2012

Должен ли класс File использоваться систематически при работе с файлами, или есть случаи, когда можно использовать String s для представления пути и имени файла?

Ответы [ 3 ]

4 голосов
/ 12 февраля 2012

Если вы посмотрите на различные классы файлового потока / чтения / записи, которые принимают либо String, либо File, вы увидите, что конструктор, который принимает String, является перегрузкой удобства для конструктора, которыйзанимает File.Другими словами, конструктор String обычно создает File из строки пути и вызывает другой конструктор.

Таким образом, использование версии File потенциально экономит на создании новых объектов File.

С другой стороны, экземпляр File будет занимать больше памяти, чем эквивалент String, и стоимостьСоздание экземпляра File невелико по сравнению со стоимостью открытия и чтения / записи файла.

Суть в том, что, вероятно, для мелкомасштабного приложения это не имеет значения с точки зрения производительности.Для крупномасштабного приложения наиболее подходящий подход зависит от того, что приложение на самом деле делает;например, постоянно ли он использует одни и те же файлы.


И, как говорится в комментариях, есть и другие способы "обозначать" файлы / пути;например, "file:" URL и класс Java 7 Path.

1 голос
/ 13 февраля 2012

Класс File - это просто класс.Вы можете создать его с помощью строки, представляющей путь к файлу.Но это требует дополнительных действий, чтобы сделать что-то с файлом.Именно тогда вы, скорее всего, понесете большую часть затрат на производительность.Файловый ввод-вывод, потоковое чтение или запись и т. Д. Вы можете использовать этот класс для поиска информации о файле, включая разрешения.

Если вы не выполняете одно из этих действий, вам следует рассмотреть одну из других альтернатив.упоминается в этой теме.

1 голос
/ 12 февраля 2012

Экземпляр File представляет путь в локальной файловой системе.Если это то, что вы хотите, чтобы ваша переменная была, это соответствующий класс для использования.Если нет (например, простое имя файла или путь к файлу на другом компьютере), используйте что-нибудь другое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...