Задача написать класс, который в конструкторе будет принимать имя файла, если файл с расширением .txt, то создавать объект FileInputStream, если нет - выбрасывать исключение. Я попытался в самом начале сделать проверку на расширение, если txt, то вызывать конструктор суперкласса, ежели нет, то выбрасывать исключение, но ide ругается, что я обязательно должен вызвать конструктор суперкласса первой же строчкой.
public class TxtInputStream extends FileInputStream {
FileInputStream fileInputStream;
public TxtInputStream(String fileName) throws FileNotFoundException, UnsupportedFileNameException, IOException {
String [] fileNameArray = fileName.split(" ");
if (fileNameArray[fileNameArray.length].equals("txt"))
this.fileInputStream = new FileInputStream(fileName);
else {
throw new UnsupportedFileNameException();
super.close();
}
}
public static void main(String[] args) {
}
}
UPD добавлю требования к задаче:
1. Класс TxtInputStream должен наследоваться от класса FileInputStream
2. Если в конструктор передан txt-файл, TxtInputStream должен вести себя, как обычный FileInputStream.
3. Если в конструктор передан не txt-файл, должно быть выброшено исключение UnsupportedFileNameException.
4. В случае выброшенного исключения, так же должен быть вызван super.close().
Ответ
Если наследник, то удалите переменную FileInputStream fileInputStream;
и конструктор будет выглядеть так:
public TxtInputStream(String fileName) throws FileNotFoundException, UnsupportedFileNameException, IOException {
super(fileName);
if(!fileName.endsWith("txt")){
throw new UnsupportedFileNameException();
}
}
Если надо сделать как обертку:
тогда удаляем наследование и оставляем переменную FileInputStream fileInputStream;, только делаем её приватной.
тогда конструктор выглядит так:
public TxtInputStream(String fileName) throws FileNotFoundException, UnsupportedFileNameException, IOException {
if(fileName.endsWith("txt"))
fileInputStream = new FileInputStream(fileName);
else{
throw new UnsupportedFileNameException();
}
}
но в этом случае необходимо создать нужные вам методы и перенаправить их в объект fileInputStream
Комментариев нет:
Отправить комментарий