Java –enableassertions MyClass




или

Java –ea MyClass

Для выключения применяется –da или -disableassertions.

Задания к главе 8

Вариант A

Выполнить задания на основе варианта А главы 4, контролируя состояние потоков ввода/вывода. При возникновении ошибок, связанных с корректностью выполнения математических операций, генерировать и обрабатывать исключитель­ные ситуации. Предусмотреть обработку исключений, возникающих при нехватке памяти, отсутствии требуемой записи (объекта) в файле, недопустимом значении поля и т.д.

Вариант B

Выполнить задания из варианта В главы 4, реализуя собственные обработчики исключений и исключения ввода/вывода.

Тестовые задания к главе 8

Вопрос 8.1.

Дан код:

class Quest1{

int counter;

java.io.OutputStream out;

Quest1(){/* инициализация out */}

float inc() {

try { counter++;
out.write(counter); }

//комментарий

}}

Какой код достаточно добавить в метод inc() вместо комментария, чтобы компиляция прошла без ошибок? (выберите два).

1) catch (java.io.OutputStreamException e){};

2) catch (java.io.IOException e){};

3) catch (java.io.OutputException e){};

4) finally{};

5) return counter;

6) return;.

Вопрос 8.2.

Какое значение будет возвращено при вызове meth(5)?

public int meth(int x) {

int y = 010; //1
try { y += x; //2

if (x<=5) throw new Exception(); //3

y++; } //4
catch (Exception e) { y--; } //5

return y; } //6

1) 12;

2) 13;

3) 14;

4) 15;

5) ошибка компиляции: невыполнимый код в строке 4.

Вопрос 8.3.

Какое значение будет возвращено при вызове meth(12), если при вызове mexcept(int x) возникает исключительная ситуация ArithmeticException?

int meth(int x) {

int count=0;

try { count += x;

count += mexcept(count);

count++;

} catch (Exception e) {

--count;

return count;

}

finally {

count += 3;

return count;

}

}

1) 11;

2) 12;

3) 13;

4) 14;

5) ошибка компиляции из-за отсутствия return после блока finally.

Вопрос 8.4.

Какое из следующих определений метода show() может законно использоваться вместо комментария //КОД в классе Quest4?

class Base{

public void show(int i) {/*реализация*/}
}
public class Quest4 extends Base{
//КОД
}

1) void show (int i) throws Exception {/*реализация*/}

2) void show (long i) throws IOException {/*реализация*/}

3) void show (short i){ /*реализация*/}

4) public void show (int i) throws IOException {/*реализация*/}

Вопрос 8.5.

Дан код:

import java.io.*;

public class Quest5 {

//ОБЪЯВЛЕНИЕ ioRead()

public static void main(String[] args) {

try {

ioRead();

} catch (IOException e){}

}}

Какое объявление метода ioRead() должно быть использовано вместо комментария, чтобы компиляция и выполнение кода прошли успешно?

1) private static void ioRead()

throws IOException{};

2) public static void ioRead()

throw IOException{};

3) public static void ioRead(){};

4) public static void ioRead()

throws Exception{}.

 
Глава 9

ФАЙЛЫ. ПОТОКИ ВВОДА/ВЫВОДА

Потоки ввода/вывода используются для передачи данных в файловые потоки, на консоль или на сетевые соединения. Потоки представляют собой объекты соответствующих классов. Библиотека ввода/вывода предоставляет пользователю большое число классов и методов и постоянно обновляется.

Класс File

Для работы с физическим файлами и каталогами (директориями), расположенными на внешних носителях, в приложениях Java используются классы из пакета java.io.

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

Объект класса File создается одним из нижеприведенных способов:

File myFile = new File(”\\com\\myfile.txt”);

File myDir = new File(”c:\\jdk1.6.0\\src\\java\\io”);

File myFile = new File(myDir, ”File.java”);

File myFile = new File(”c:\\com”, ”myfile.txt”);

File myFile = new File(new URI(” Интернет-адрес ”));

В первом случае создается объект, соответствующий файлу, во втором – подкаталогу. Третий и четвертый случаи идентичны. Для создания объекта указы­вается каталог и имя файла. В пятом – создается объект, соответствующий адресу
в Интернете.

При создании объекта класса File любым из конструкторов компилятор не выполняет проверку на существование физического файла с заданным путем.

Существует разница между разделителями, употребляющимися при записи пути к файлу: для системы Unix – “ / ”, а для Windows – “ \\ ”. Для случаев, когда неизвестно, в какой системе будет выполняться код, предусмотрены специальные поля в классе File:

public static final String separator;

public static final char separatorChar;

С помощью этих полей можно задать путь, универсальный в любой системе:

File myFile = new File(File. separator + ”com”

+ File. separator + ”myfile.txt”);

Также предусмотрен еще один тип разделителей – для директорий:

public static final String pathSeparator;

public static final char pathSeparatorChar;

К примеру, для ОС Unix значение pathSeparator=”;”, а для Windows – pathSeparator=”:”.

В классе File объявлено более тридцати методов, наиболее используемые из них рассмотрены в следующем примере:

/* пример # 1: работа с файловой системой: FileTest.java */

package chapt09;

import java.io.*;

import java.util.*;

 

public class FileTest {

public static void main(String[] args) {

//c объектом типа File ассоциируется файл на диске FileTest2.java

File fp = new File("chapt09" + File. separator

+ "FileTest2.java");

if (fp.exists()) {

System. out. println(fp.getName() + " существует");

 

if (fp.isFile()) { //если объект – дисковый файл

System. out. println("Путь к файлу:\t"

+ fp.getPath());

System. out. println("Абсолютный путь:\t"

+ fp.getAbsolutePath());

System. out. println("Размер файла:\t"

+ fp.length());

System. out. println("Последняя модификация:\t"

+ new Date(fp.lastModified()));

System. out. println("Файл доступен для чтения:\t"

+ fp.canRead());

System. out. println("Файл доступен для записи:\t"

+ fp.canWrite());

System. out. println("Файл удален:\t"

+ fp.delete());

}

} else

System. out. println("файл " + fp.getName()

+ " не существует");

try {

if (fp.createNewFile())

System. out. println("Файл " + fp.getName()

+ " создан");

} catch (IOException e) {

System. err. println(e);

}

//в объект типа File помещается каталог\директория

// в корне проекта должен быть создан каталог com.learn с несколькими файлами

File dir = new File("com" + File. separator + "learn");

if (dir.exists() && dir.isDirectory()) /*если объект

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

каталог существует */

System. out. println("каталог "

+ dir.getName() + " существует");

File[] files = dir.listFiles();

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

Date date = new Date(files[i].lastModified());

System. out. print("\n" + files[i].getPath()

+ " \t| " + files[i].length() + "\t| "

+ date.toString());

//использовать toLocaleString() или toGMTString()

}

// метод listRoots() возвращает доступные корневые каталоги

File root = File. listRoots ()[1];

System. out. printf("\n%s %,d из %,d свободно.", root.getPath(),root.getUsableSpace(),root.getTotalSpace());

}

}

В результате файл FileTest2.java будет очищен, а на консоль выведено:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: