Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 2© Александр Фролов, Григорий ФроловТом 32, М.: Диалог-МИФИ, 1997, 288 стр. Приложение FileInfoВ приложении FileInfo мы демонстрируем способы работы с классом File. После запуска наше приложение предлагает ввести путь к файлу (рис. 2.8). Вы также можете ввести путь к каталогу. Рис. 2.8. Работа приложения FileInfo Далее приложение создает объект класса File, передавая введенную строку соответствующему конструктору, а затем, если указанный файл или каталог существует, отображает его параметры. На рис. 2.8 видно, что в ответ на прглашение был введен путь к файлу autoexec.bat. Приложение вывело родительский каталог, в котором находится этот файл (диск c:), длину файла в байтах (235 байт), а также сообщило нам, что для файла разрешены операции чтения и записи. Исходный текст приложения FileInfoИсходный текст приложения FileInfo приведен в листинге 2.7. Листинг 2.7. Файл FileInfo\FileInfo.java // ========================================================= // Просмотр атрибутов файла при помощи класса File // // (C) Фролов А.В, 1997 // // E-mail: frolov@glas.apc.org // WWW: http://www.glasnet.ru/~frolov // или // http://www.dials.ccas.ru/frolov // ========================================================= import java.io.*; import java.util.*; // ========================================================= // Класс FileInfo // Главный класс приложения // ========================================================= public class FileInfo { // ------------------------------------------------------- // main // Метод, получающий управление при запуске приложения // ------------------------------------------------------- public static void main(String args[]) { // Массив для ввода строки с клавиатуры byte bKbdInput[] = new byte[256]; // Введенная строка String sFilePath; try { // Выводим строку приглашения System.out.println("Enter file path..."); // Читаем с клавиатуры строку для записи в файл System.in.read(bKbdInput); // Преобразуем введенные символы в строку типа String sFilePath= new String(bKbdInput, 0); // Отбрасываем символ конца строки StringTokenizer st; st = new StringTokenizer(sFilePath, "\r\n"); sFilePath = new String((String)st.nextElement()); // Создаем объект класса File, соответствующий // введенному пути File fl = new File(sFilePath); // Если указанный файл или каталог не существует, // выводим сообщение и завершаем работу if(!fl.exists()) { System.out.println("File not found: " + sFilePath); } // Если путь существует, определяем параметры // соответствующего файла или каталога else { // Проверяем, был указан файл или каталог if(fl.isDirectory()) System.out.println("File " + sFilePath + " is directory"); else if (fl.isFile()) System.out.println("File " + sFilePath + " is file"); // Получаем и выводим атрибуты файла или каталога System.out.println( "Parent: " + fl.getParent() + "\nLength: " + fl.length() + "\nRead op. available: " + fl.canRead() + "\nWrite op. available: " + fl.canWrite()); } System.out.println("Press <Enter> to terminate..."); System.in.read(bKbdInput); } catch(Exception ioe) { System.out.println(ioe.toString()); } } } Описание исходного текстаПосле ввода с клавиатуры пути к файлу или каталогу приложение записывает введенный путь в строку sFilePath класса String. Так как в этой строке имеется символ конца строки, нам нужно его отрезать. Для этого мы воспользуемся классом StringTokenizer, задав для него в качестве разделителя символ конца строки: StringTokenizer st; st = new StringTokenizer(sFilePath, "\r\n"); sFilePath = new String((String)st.nextElement()); Первый же вызов метода nextElement возвращает нам строку пути, которую мы и сохраняем в поле sFilePath. Далее мы создаем объект класса File, передавая конструктору этого класса строку sFilePath: File fl = new File(sFilePath); Так как при вводе пути файла или каталога вы можете допустить ошибку, приложение, прежде чем продолжать свою работу, проверяет существование указанного файла или каталога. Для проверки вызывается метод exists, определенный в классе File: if(!fl.exists()) { System.out.println("File not found: " + sFilePath); } На следующем этапе приложение проверяет, является ли объект класса File каталогом, вызвая метод isDirectory: if(fl.isDirectory()) System.out.println("File " + sFilePath + " is directory"); Аналогичная проверка выполняется методом isFile на принадлежность объекта к файлам: else if (fl.isFile()) System.out.println("File " + sFilePath + " is file"); На последнем этапе приложение определяет различные атрибуты файла или каталога, вызывая соответствующие методы класса File: System.out.println( "Parent: " + fl.getParent() + "\nLength: " + fl.length() + "\nRead op. available: " + fl.canRead() + "\nWrite op. available: " + fl.canWrite()); Параметры отображаются на консоли методом println. |