Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

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.

[Назад] [Содеожание] [Дальше]