- •Краткая историческая справка.
- •Преимущества языка Java.
- •Недостатки java:
- •Лекция 2. Этапы разработки java-приложений. Этапы разработки java-приложений.
- •Установка jdk.
- •Инсталляция исходных кодов библиотек
- •Инсталляция пакета документации.
- •Тестирование правильности установки и создание простейшей программы
- •Визуальные среды программирования.
- •Лекция 3. Переменные и типы данных. Переменные и типы данных.
- •Подробности о примитивных типах.
- •Лекция 4. Операторы и функции. Операторы и функции.
- •Операторы ветвлений и циклов.
- •Оператор цикла while.
- •Оператор цикла for.
- •Лекция 5. Объектно ориентированное программирование Объектно ориентированное программирование.
- •Определение объекта.
- •Инкапсуляция.
- •Наследование.
- •Полиморфизм (перегрузка).
- •Пример ооп – программы.
- •Отличие перегрузки функций от переопределения.
- •Отличие классов от интерфейсов.
- •Лекция 6. Массивы и строки. Массивы и строки.
- •Многомерные массивы.
- •Приведение типов и динамические массивы.
- •Строки в java.
- •Лекция 7. Организация ввода-вывода данных Организация ввода-вывода данных.
- •Функции стандартной библиотеки ввода/вывода.
- •Новая библиотека ввода/вывода.
- •Классы потокового ввода/вывода из пакета java.Io.
- •Лекция 8. Обработка исключений. Обработка исключений.
- •Классификация исключений.
- •Перехват исключений блоками try/catch.
- •Самостоятельное выбрасывание исключений.
- •Разработка собственных классов исключений.
- •Лекция 9. Потоки. Потоки.
- •1. Cпециальный класс Thread.
- •2. Реализация интерфейса Runnable.
- •Выбор между использованием класса Thread и интерфейса Runnable.
- •Синхронизация потоков с помощью оператора synchronized.
- •Синхронизация потоков с помощью семафоров.
- •Лекция 10. Подключаемые библиотеки java. Подключаемые библиотеки java.
- •Библиотека awt
- •Внутреннее устройство системы обработки событий awt.
- •Библиотека Swing.
Функции стандартной библиотеки ввода/вывода.
Функции и классы, обслуживающие задачи доступа к файловой системе сгруппированы в классе File из пакета java.io, вместе с другими классами, отвечающими за ввод/вывод.
Пример создания экземпляра File:
import java.io.File;
…
File jfile = new File(“C:\\jdk1.8.0\\bin\\java.exe”);
Удвоенные обратные слеши здесь соответствуют экранированным одинарным слешам Windows. В Linux – подобных системах слеши будут прямые.
Чтобы избежать употребления двойных слешей можно воспользоваться константами File.separator или File.separator.Char, которые определяют вид разделителя пути в конкретной ОС.
String my_dir_name = “src”;
String my_file_name = “Main.java”;
String my_file_path = my_dir_name + File.separator + my_file_name;
Если файл находится в текущей директории, методы класса File позволяют вычислить абсолютный и относительный пути к нему.
File ma_file = new File(“readme.txt”);
relativeFile.isAbsolute(); // вернет false, поскольку путь не является абсолютным
relativeFile.getAbsolutePath(); // вернет строку «/home/src/java/readme.txt» - абс. путь.
С помощью методов класса File можно разобрать строку с путем на составляющие.
File file = new File(“/home/src/java/readme.txt”);
String path = file.getPath(); // «/home/src/java»
String name_file = file.getName(); // readme.txt
String parent_directory = file.getParent(); // «/home/src» - родительская директория
Если нам нужно сравнить абсолютные пути к файлам, заданным относительными путями (вроде «../», «.», «//» и т.п.), чтобы убедиться, что обе ссылки ведут к одному и тому же файлу, можно воспользоваться методом, вычисляющим канонический путь. Пример:
File my_file = new File(“./../readme.txt”);
String canonicalPath = file.getCanonicalPath(); // вернет «/home/src/java/readme.txt»
Приведя оба пути к каноническому виду, их можно сравнивать как строки.
После того, как мы получили доступ к файлу через объект File, модно запросить у него какие-нибудь дополнительные данные по файлу. Пример:
File my_file = new File(“/home/src/java/readme.txt”);
my_file.exists(); // существует ли файл «true/false»
my_file.isFile(); // это файл или директория «true»
my_file.isDirectory(); // «false»
my_file.length(); ..// 12345
my_file.lastModified(); // время последней модификации
Если вместо файла объект содержит директорию, то можно получить её содержимое:
File my_dir = new File(“/home/src/java”);
my_dir.exists(); // true
my_dir.isFile(); // false
my_dir.isDirectory(); // true
my_dir.list(); // String []
my_dir.listFiles(); // File []
Содержимое возвращается только на один уровень. Если есть поддиректории, то прийдется вручную написать функцию рекурсивного обхода поддиректорий.
Все рассмотренные методы фактически работают с содержимым экземпляра File и ничего не меняют в файловой системе на диске, поэтому они не возбуждают исключений.
Если же реально попытаться записать какой-нибудь файл, то блок вызова этой функции нужно обязательно обернуть в блок try - catch (исключения будут рассмотрены в следующей лекции).
try {
Boolean success = file.createNewFile(); // true/false
} catch (IOExсeption e) {
// handle error
}
Обычно по умолчанию файлы создаются теми же функциями, которые туда пишут. Вызывать отдельно функцию создания файла есть смысл только когда программисту необходимо быть уверенным, что файл создан именно его программой и именно сейчас, а не каким - либо сторонним процессом.
Для создания директорий используются функции:
File dir = new File(“a/b/c”);
boolean result = dir.mkdir(); // может создать только одну директорию за раз.
boolean result = dir.mkdirs(); // может создать все поддиректории за один вызов.
Переименование/перемещение.
boolean result = file.renameTo(targetFile);
Теоретически можно с помощью этого метода переместить файл в другую директорию, но на практике эта функция является платформенно-зависимой и результат перемещения малопредсказуем. Поэтому лучше использовать только для переименования, а перемещать путем копирования содержимого файла в новый файл другими функциями.
Основной недостаток функций из стандартной библиотеки в том, что большинство из них вместо выбрасывания исключения возвращают простое булевское true/false и поэтому в случае ошибки программисту неоткуда взять информацию о причине сбоя.
Эти недостатки исправлены в новой библиотеке версии java 7, классы которой для работы с файлами и директориями располагаются в пакете java.nio.file
