Диск для работы с java

Диск для работы с java

Класс File, определенный в пакете java.io, не работает напрямую с потоками. Его задачей является управление информацией о файлах и каталогах. Хотя на уровне операционной системы файлы и каталоги отличаются, но в Java они описываются одним классом File.

В зависимости от того, что должен представлять объект File — файл или каталог, мы можем использовать один из конструкторов для создания объекта:

Класс File имеет ряд методов, которые позволяют управлять файлами и каталогами. Рассмотрим некоторые из них:

boolean createNewFile() : создает новый файл по пути, который передан в конструктор. В случае удачного создания возвращает true, иначе false

boolean delete() : удаляет каталог или файл по пути, который передан в конструктор. При удачном удалении возвращает true.

boolean exists() : проверяет, существует ли по указанному в конструкторе пути файл или каталог. И если файл или каталог существует, то возвращает true, иначе возвращает false

String getAbsolutePath() : возвращает абсолютный путь для пути, переданного в конструктор объекта

String getName() : возвращает краткое имя файла или каталога

String getParent() : возвращает имя родительского каталога

boolean isDirectory() : возвращает значение true, если по указанному пути располагается каталог

boolean isFile() : возвращает значение true, если по указанному пути находится файл

boolean isHidden() : возвращает значение true, если каталог или файл являются скрытыми

long length() : возвращает размер файла в байтах

long lastModified() : возвращает время последнего изменения файла или каталога. Значение представляет количество миллисекунд, прошедших с начала эпохи Unix

String[] list() : возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге

File[] listFiles() : возвращает массив файлов и подкаталогов, которые находятся в определенном каталоге

boolean mkdir() : создает новый каталог и при удачном создании возвращает значение true

boolean renameTo(File dest) : переименовывает файл или каталог

Работа с каталогами

Если объект File представляет каталог, то его метод isDirectory() возвращает true . И поэтому мы можем получить его содержимое — вложенные подкаталоги и файлы с помощью методов list() и listFiles() . Получим все подкаталоги и файлы в определенном каталоге:

Теперь выполним еще ряд операций с каталогами, как удаление, переименование и создание:

Работа с файлами

Работа с файлами аналогична работе с каталога. Например, получим данные по одному из файлов и создадим еще один файл:

При создании нового файла метод createNewFile() в случае неудачи выбрасывает исключение IOException , поэтому нам надо его отлавливать, например, в блоке try. catch, как делается в примере выше.

Источник

Как установить JDK и среду разработки IntelliJ IDEA

Начинаем разрабатывать на Java: где взять, как установить и настроить всё, что нужно.

Читайте также:  Поделки из ватных дисков весна

Чтобы начать программировать на Java, нужно установить комплект разработчика приложений (SDK) . Он позволит запускать, отлаживать и исполнять наши первые программы. Также нам понадобится среда разработки ( IDE ), где мы и будем писать код.

Пройдём через это вместе. Установим JDK в Windows, Ubuntu и macOS, и IntelliJ IDEA тоже в Windows, Ubuntu и macOS. Поехали!

Установка Java Development Kit в Windows

Java Development Kit (JDK) — это комплект ПО для разработчиков приложений на Java. Стандартная установка включает в себя интерпретатор, облегчённый интерпретатор JRE, компилятор, библиотеку Java-классов, отладчик, средства архивации и сжатия jar и другое.

Чтобы установить JDK в Windows, нужно:

  • загрузить актуальную версию пакета,
  • установить его,
  • настроить переменные окружения.

1. Скачиваем установочный архив

Нам нужна бесплатная версия — AdoptOpenJDK (она есть под Windows, macOS, Ubuntu и другие платформы).

Идём сюда и выбираем версию JDK (актуальны версии 8+), виртуальную Java-машину (JVM) и свою платформу.

Я выбрал OpenJDK 11 ( LTS ), HotSpot и Windows x64 jdk соответственно:

Скачиваем файл по появившейся ссылке (я выделил её жёлтым на скрине выше).

2. Устанавливаем

Извлекаем скачанный архив в папку C:\Program Files\Java\

При этом будет создана подпапка jdk-*номер версии*, а внутри неё появится папка bin.

В результате полный путь до папки bin у меня выглядит так:

3. Настраиваем переменные окружения Windows

Нам нужно создать системную переменную JAVA_HOME, которая будет хранить путь до нашей версии JDK. Это понадобится программам для работы с проектами Java.

Заходим в Панель управления → Система → Дополнительные параметры системы → Дополнительно

А можно и прямо в Панели управления вбить в поиск слово « переменных» (без кавычек). ОС предложит варианты, из которых выбирайте « Изменение системных переменных среды».

У вас откроется окно:

Здесь жмём на кнопку « Переменные сред ы».

В новом окне для раздела « Системные переменные» кликаем « Создать». В « Имя переменной» вводим JAVA_HOME (именно так, латиницей в верхнем регистре), а в поле « Значение переменной» подставляем наш путь C:\Program Files\Java\jdk-*номер версии* :

Далее в разделе « Переменные сред ы…» редактируем системную переменную Path. Нужно добавить в неё путь к папке с исполняемыми файлами Java, а именно: %JAVA_HOME%\bin (соблюдайте регистр символов):

4. Проверяем установку

Запускаем Командную строку Windows. Для этого нажимаем Win + R, а в появившемся окне вводим cmd.exe и жмём на Enter.

В открывшейся консоли набираем javac -version и жмём ввод.

Если установка прошла успешно, то ответ покажет версию вашего компилятора:

Установка Java Development Kit в Linux (Ubuntu)

Рассмотрим установку JDK на одном из самых популярных дистрибутивов Linux — Ubuntu 20.04 ( LTS ).

Проще всего установить версию, которая входит в пакет Ubuntu. По умолчанию в Ubuntu 20.04 входит версия Open JDK 11.

1. Проверяем ранее установленные версии

Открываем терминал сочетанием клавиш Ctrl + Alt + T и обновляем базу данных пакетов с помощью APT :

Проверяем ранее установленные версии командой:

Читайте также:  Как разделить гугл диск

Источник

Pathосные новшества JDK7. Работа с файловой системой

Класс Path

Прежде чем перейти к более интересному материалу, необходимо рассмотреть базовый класс Path.
Класс Path включает в себя различные методы, которые могут быть использованы для получения информации о пути, получения доступа к элементам пути, преобразования пути в другие формы, извлечения части пути. Существуют также методы для сравнения строк пути и методы для удаления избыточности.

Для создания экземпляра класса Path, воспульзуемся статическим методом get класса Paths, позволяющего создать путь из строки или URI.

Path path1 = Paths. get ( «/home/iam/folder» ) ;

Path path2 = Paths. get ( «C: \\ this \\ my \\ folder» ) ;

Path path3 = Paths. get ( «file:///Users/user/myfile.txt» ) ;

После того как экземпляр Path создан, мы можем получить некоторую информацию о пути:

//Path path = Paths.get(«C:\\home\\joe\\foo»); // Microsoft Windows syntax

Path path = Paths. get ( «/home/iam/folder» ) ; // Solaris syntax

System . out . format ( «toString: %s%n» , path. toString ( ) ) ; //—>/home/iam/folder

System . out . format ( «getName: %s%n» , path. getName ( ) ) ; //—>folder

System . out . format ( «getName(0): %s%n» , path. getName ( 0 ) ) ; //—>home

System . out . format ( «getNameCount: %d%n» , path. getNameCount ( ) ) ; //—>3

System . out . format ( «subpath(0,2): %d%n» , path. subpath ( 0 , 2 ) ) ;

System . out . format ( «getParent: %s%n» , path. getParent ( ) ) ; //—>/home/iam/

System . out . format ( «getRoot: %s%n» , path. getRoot ( ) ) ; //—>/

System . out . format ( «isHidden: %s%n» , path. isHidden ( ) ) ; //—>false

метод subpath остался без вывода не случайно. Он упорно не хочет работать ни в Win7 ни Ubuntu, о чем я сообщил куда надо. Хотя этот пример взят с оригинального туторала, а в прочем это не единственная ошибочка.

Файлы и атрибуты файлов. Управление метаданными.

public class Main <

* @param args the command line arguments

public static void main ( String [ ] args ) throws IOException <

// TODO code application logic here

Path file = Paths. get ( «/home/aum/Downloads/demotivatory_15.jpg» ) ;

BasicFileAttributes attr = Attributes . readBasicFileAttributes ( file ) ;

if ( attr. creationTime ( ) != null ) <

System . out . println ( «creationTime: » + attr. creationTime ( ) ) ;

if ( attr. lastAccessTime ( ) != null ) <

System . out . println ( «lastAccessTime: » + attr. lastAccessTime ( ) ) ;

if ( attr. lastModifiedTime ( ) != null ) <

System . out . println ( «lastModifiedTime: » + attr. lastModifiedTime ( ) ) ;

System . out . println ( «isDirectory: » + attr. isDirectory ( ) ) ;

System . out . println ( «isOther: » + attr. isOther ( ) ) ;

System . out . println ( «isRegularFile: » + attr. isRegularFile ( ) ) ;

System . out . println ( «isSymbolicLink: » + attr. isSymbolicLink ( ) ) ;

System . out . println ( «size: » + attr. size ( ) ) ;

Результат:
run:
lastAccessTime: 2011-02-14T14:16:32Z
lastModifiedTime: 2011-02-04T02:17:27Z
isDirectory: false
isOther: false
isRegularFile: true
isSymbolicLink: false
size: 64613
BUILD SUCCESSFUL (total time: 0 seconds)

На этом вводную предлагаю считать завершенной. За бортом осталось множество методов «синтаксической» работы с Path: удаление избыточности в пути, преобразование к абсолютному пути, сравнение путей, создание путей из объеденения и т.п. Всю необходимую информацию вы можете найти здесь (класс Path) И теперь мы смело можем перейти к более сложному, но и более интересному материалу.

Обход дерева файлов

Получение информации о папках и файлах на диске, довольно типичная задача для прикладных программ. Пакет java.nio.file предлагает нам удобное решение такой задачи, предоставляя интерфейс FileVisitor.
FileVisitor определяет требуемое поведение в ключевых точках прохождения процесса: когда файл посещен, прежде чем получить доступ к каталогу, после получения доступа к каталогу, или в случае отказа. Интерфейс состоит из пяти(! оставлю слово пять из оригинального текста, хотя как не старался нашел только 4! метода ) методов, которые соответствуют этим ситуациях:

  • preVisitDirectory – вызывается до входа в папку
  • postVisitDirectory – вызывается после «просмотра» всех объектов каталога. В случае возникновения ошибки, вызывается исключение и передается методу
  • visitFile – вызывается для получения информации о файле, обрабатываемом в данный момент. В метод передаются атрибуты файла BasicFileAttributes, или мы можем передать определенный набор атрибутов, н-р можем выбрать чтение атрибутов DosFileAttributeView, чтобы определить является ли файл скрытым(«hidden»).
  • visitFileFailed – вызывается при невозможности получить доступ к файлу. В этом случае вызывается исключение и передается методу. Обработка этого события может быть различной(вызов исключения, запись в лог или вывод информации на консоль и т.д.
Читайте также:  Dvd диск это ответить

import static java. nio . file . FileVisitResult . *;

//Используем класс SimpleFileVisitor, который реализовывает методы интерфейса FileVisitor

public class PrintFiles extends SimpleFileVisitor Path > <

//Выводим информацию о обрабатываемом в данный момент файле.

// метод Files.probeContentType выводит информацию о типе контента

public FileVisitResult visitFile ( Path file, BasicFileAttributes attr ) throws IOException <

if ( attr. isSymbolicLink ( ) ) <

System . out . format ( «Symbolic link: %s » , file ) ;

> else if ( attr. isRegularFile ( ) ) <

System . out . format ( «Regular file: %s Content is %s%n » , file,Files. probeContentType ( file ) ) ;

System . out . format ( «Other: %s » , file ) ;

System . out . println ( «(» + attr. size ( ) + «bytes)» ) ;

//Выводим информацию о посещенном каталоге

/* Перечисление FileVisitResult имеет следующие варианты

CONTINUE продолжить проход.

SKIP_SIBLINGS продолжить проход без осмотра дочерних папок.

SKIP_SUBTREE продолжить без просмотра объектов данной папки.

public FileVisitResult postVisitDirectory ( Path dir, IOException exc ) <

System . out . format ( «Directory: %s%n» , dir ) ;

//в случае ошибки доступа к файлу выбрасывается исключение IOException

public FileVisitResult visitFileFailed ( Path file, IOException exc ) <

System . err . println ( exc ) ;

public static void main ( String [ ] args ) throws IOException <

//создаем объект Path

Path startingDir = Paths. get ( «/home/aum/myjobs/» ) ;

//создаем экземпляр нашего класса, реализующего FileVisit

PrintFiles pf = new PrintFiles ( ) ;

//создаем экземпляр EnumSet, необходимый нам как параметр, и указывающий,

// что программа при прохождении дерева файлов, следует по ссылкам

EnumSet FileVisitOption > options = EnumSet. of ( FileVisitOption. FOLLOW_LINKS ) ;

int maxDepth = 2 ; //максимальное число уровней каталога для просмотра

/* Запуск анализа дерева файлов. Используется один из методов класса Files*/

Files. walkFileTree ( startingDir, options, maxDepth, pf ) ;

Результат
run:
Regular file: /home/aum/myjobs/sys.txt Content is text/plain
(11362bytes)
Regular file: /home/aum/myjobs/vzriv.mp3 Content is audio/mpeg
(2336827bytes)
Regular file: /home/aum/myjobs/report.html Content is text/html
(24574bytes)
Regular file: /home/aum/myjobs/examples.desktop Content is application/x-desktop
(179bytes)
Directory: /home/aum/myjobs/java
Directory: /home/aum/myjobs
BUILD SUCCESSFUL (total time: 0 seconds)

И в завершении о производительности. Н-р, код указаный выше, выполняется (на моем каталоге /home) так:
Objects found 19931 Total Size 2329851621 byte
BUILD SUCCESSFUL (total time: 38 seconds)
системные характеристики
Ubuntu 10.4
Kernel Linux 2.6.32-28
Gnom 2.30.2
Memory 1.9 G
Intel® Core(TM) i3 CPU M330 @ 2.13 GHz

Более полную информацию можно получить здесь

Источник

Поделиться с друзьями
Шинбург