Чтение онлайн

ЖАНРЫ

Основы программирования на Java

Сухов С. А.

Шрифт:

Для определения стандартных свойств файла в классе File есть много разных методов. Однако класс File несимметричен. Есть много методов, позволяющих узнать свойства объекта, но соответствующие функции для изменения этих свойств отсутствуют. В очередном примере используются различные методы, позволяющие получить характеристики файла:

import java.io.File;

class FileTest {

static void p(String s) {

System.out.println(s);

}

public static void main(String args[]) {

File fl = new File("/java/COP YRIGHT");

р("Имя
файла:" + fl .getName);

р("Путь:" + fl.getPath);

р("Полный путь:" + fl.getAbsolutePath);

р("Родительский каталог:" + fl.getParent);

p(fl.exists ? "существует" : "не существует");

p(fl.canWrite ? "можно записывать" : "нельзя записывать");

p(fl.canRead ? "можно читать" : "нельзя читать");

p("is" + ("Директория? "+fl ,isDirectory ? "да": " нет");

p(fl.isFile ? "обычный файл" : "не обычный файл");

р("Последняя модификация файла:" + fl. lastModified);

р("Размер файла:" + fl.length + " Bytes");

}

}

При запуске этой программы вы получите:

Имя файла: COPYRIGHT

Путь: /java/COPYRIGHT

Полный путь:/Java/COPYRIGHT

Родительский каталог:/java

существует

можно записывать

можно читать

Директория? нет

обычный файл

is absolute

Последняя модификация файла:812465204000

Размер файла:695 Bytes

Существует также несколько сервисных методов, использование которых ограничено обычными файлами (их нельзя применять к каталогам). Метод renameTo(File dest) переименовывает файл (нельзя переместить файл в другой каталог). Метод delete уничтожает дисковый файл. Этот метод может удалять только обычные файлы, каталог, даже пустой, с его помощью удалить не удаётся.

11.2. Каталоги

Каталоги — это объекты класса File, в которых содержится список других файлов и каталогов. Если File ссылается на каталог, его метод isDirectoiy возвращает значение true. В этом случае вы можете вызвать метод list и извлечь содержащиеся в объекте имена файлов и каталогов. В очередном примере показано, как с помощью метода list можно просмотреть содержимое каталога.

import j ava.io.File;

class DirList {

public static void main(String args[]) {

String dirname = "/java"; // имя каталога

File fl = new File(dirname);

if (fLisDirectory) {

// является ли fl каталогом

System.out.println("Directory of' + dirname);

String s[]=fl.list;

for (int i=0; i < s.length; i++) {

File f = new File(dirname + "/" + s[i]);

if(fisDiiectory)

{

//
является ли f каталогом

System.out.println(s[i] +” is a directory"):

}

else {

System.out.println(s[i] + " is a file");

}

}

}

else {

System.out.println(dirname + " is not a directory");

}

}

}

В процессе работы эта программа вывела содержимое каталога /java моего персонального компьютера в следующем виде:

С:\> java DirList

Directory of /java

bin is a directory COPYRIGHT is a file

README is a file

11.3. Класс InputStream

InputStream — абстрактный класс, задающий используемую в Java модель входных потоков. Все методы этого класса при возникновении ошибки возбуждают исключение IOException. Ниже приведен краткий обзор методов класса InputStream.

1. read - возвращает представление очередного доступного символа во входном потоке в виде целого;

2. read(byte b[]) - пытается прочесть максимум b.length байтов из входного потока в массив b. Возвращает количество байтов, в действительности прочитанных из потока;

3. read(byte b[], int off, int len) - пытается прочесть максимум len байтов, расположив их в массиве Ь, начиная с элемента off. Возвращает количество реально прочитанных байтов;

4. skip(long n) - пытается пропустить во входном потоке n байтов. Возвращает количество пропущенных байтов;

5. available - возвращает количество байтов, доступных для чтения в настоящий момент;

6. close - закрывает источник ввода. Последующие попытки чтения из этого потока приводят к возбуждению IOException. 11.4. Класс OutputStream

Как и InputStream, OutputStream — абстрактный класс. Он задает модель выходных потоков Java. Все методы этого класса имеют тип void и возбуждают исключение IOException в случае ошибки. Ниже приведен список методов этого класса:

1. write(int b) записывает один байт в выходной поток. Обратите внимание, что аргумент этого метода имеет тип int, что позволяет вызывать write, передавая ему выражение, при этом не нужно выполнять приведение его типа к byte;

2. write(byte b[]) записывает в выходной поток весь указанный массив байтов;

3. write(byte b[], int off, int len) записывает в поток часть массива — len байтов, начиная с элемента b[off];

4. flush очищает любые выходные буферы, завершая операцию вывода;

5. close закрывает выходной поток. Последующие попытки записи в этот поток будут возбуждать IOException.

11.5. Файловый поток FilelnputStream

Класс FilelnputStream используется для ввода данных из файлов. В приведенном ниже примере создается два объекта этого класса, использующие один и тот же дисковый файл.

Поделиться с друзьями: