Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Как раз эти методы, прекрасно работавшие в DOS и UNIX, безнадежно «морально устарели» в современных версиях Windows. «Подъем» к родителю по файловому дереву означает банальное удаление последнего элемента в цепочке каталогов, разделенных слэшем или File.separator.
Например, у каталога «\имя_моего_компьютераe» (диск E моего компьютера в виде «сетевого» маршрута) родителем оказывается «\имя_моего_компьютера», а у него, в свою очередь, «\» – «фальшивые» каталоги, с которыми класс File не может сделать ничего полезного. Попытка узнать все корневые каталоги вызовом listRoots() даже в современной Windows XP вернет список корневых каталогов всех дисков, полностью игнорируя такие понятия, как «сетевое окружение», «рабочий стол», «мои документы». Ниже мы обсудим «современную» альтернативу – класс javax.swing.filechooser.FileSystemView.
Кроме основной задачи – работы с маршрутами – класс File реализует некоторые вспомогательные операции над физическими файлами: проверку существования, удаление, создание файла или подкаталога, переименование и т. п. Для этого служат методы:
public boolean exists()
public boolean isDirectory()
public boolean isFile()
public boolean isHidden()
public long lastModified()
public long length()
public boolean canRead()
public boolean canWrite()
public boolean delete()
public void deleteOnExit()
public boolean createNewFile()
public boolean mkdir()
public boolean mkdirs()
public boolean renameTo(File dest)
public boolean setLastModified(long time)
public boolean setReadOnly()
Все эти методы, кроме createNewFile(), не порождают исключений.
Как видите, набор возможностей для современных операционных систем исключительно бедный, учитывая, что это единственный класс пакета java.io.*, предлагающий подобный сервис. (Мы не считаем класс java.io.FileSystem, обеспечивающий то же самое, но несколько менее удобным способом.) Удивительно, что метод isHidden() не имеет парного setHidden(), а setReadOnly() работает только «в одну сторону», не позволяя снять атрибут «read-only».
Еще класс File обеспечивает несколько вспомогательных возможностей – создание временных файлов и преобразование маршрута к формату URI, и наоборот. Также этот класс предоставляет строковые константы separator, pathSeparator и их синонимы типа char: separatorChar и pathSeparatorChar.