Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Методы getPath() и getAbsolutePath() для «нефайловых» объектов типа «Desktop» возвращают путь к каталогу, который в операционной системе соответствует данной высокоуровневой сущности, при отсутствии такового (как в случае «My Computer») – некоторые абстрактные имена.
Описанные свойства наследников класса File, возвращаемых методами FileSystemView, выяснены из тестирования на версии JDK 1.4.1. В документации они, судя по всему, не описаны, так что полагаться на них не стоит. Для перемещения по файловой системе следует использовать документированные методы FileSystemView getParentDirectory, getChild, getFiles...
Важное замечание: в отличие от класса File, библиотека FileSystemView рассчитана на работу не с произвольными маршрутами, а только с путями к реально существующим файлам или подкаталогам. Например, метод getParentDirectory для несуществующего файла/подкаталога (созданного конструктором File для маршрута, не соответствующего реальному файлу или каталогу) попросту вернет null. Метод File.getParent() в этом случае на общих основаниях «отрезал» бы от маршрута конечную часть, начиная от последнего слэша.
Кроме описанных, библиотека FileSystemView предлагает также следующие методы:
public File getDefaultDirectory()
public File getHomeDirectory()
Первый из них под Windows возвращает каталог «My Documents», а второй – каталог «Desktop».
public boolean isFileSystem(File f)
public boolean isRoot(File f)
public boolean isFileSystemRoot(File dir)
public boolean isDrive(File dir)
public boolean isFloppyDrive(File dir)
public boolean isComputerNode(File dir)
Эти методы (в дополнение к традиционным методам isDirectory() и isFile() класса File) позволяют распознать «специальные» узлы файловой иерархии, не соответствующие обычным файлам или подкаталогам. Точный их смысл описан в документации на FileSystemView. Все «обычные» файлы и подкаталоги, которые можно корректно представить классом File, относятся к категории isFileSystem. Часто бывает полезно сочетание свойств:
fsv.isFileSystem(f)
&& !fsv.isRoot(f)
&& !fsv.isFileSystemRoot(f);
В этом случае есть гарантия, что не только сам маршрут f, но и его родитель является вполне «добропорядочным» маршрутом, допускающим представление с помощью класса File.
public boolean isHiddenFile(File f)
Если судить по документации, это просто дубликат обычного f.isHidden().
public Boolean isTraversable(File f)
Этот метод обобщает f.isDirectory() на случай «необычных» элементов файловой системы, таких как соседние компьютеры в локальной сети. Несколько необычный тип результата, видимо, выбран по аналогии с другим классом javax.swing.filechooser.FileView, обслуживающим нужды визуального компонента JFileChooser.