public TxtInputStream(String fileName) throws IOException {
super(fileName);
String text = fileName;
text.replace(".", " ");
String[] typeFile = fileName.split(" ");
if (!typeFile[typeFile.length-1].equals("txt")) {
super.close();
throw new UnsupportedEncodingException();
}
}Павел Краснов
22 уровень
Почему так не принимает а только через !fileName.endsWith(".txt") ???
Обсуждается
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #598481
2 марта 2020, 12:23
Может потому что здесь не то исключение?
А зачем менять точку на пробел, чем сплит по точке не устроил?
+1
Павел КрасновExpert
2 марта 2020, 12:39
split не хочет воспринимать "." как разделитель, пришлось сначала ее выкорчевать, но видимо надо было заменить ее на " ." а не на пробел. В помощи нашел что сравнивать надо именно с ".txt", в противном случае валидатор видимо подкидывает файл вида "name txt", т.е. без расширения и он делает казюлю! в итоге 7-мь попыток и я сдался, сделал через как он хочет.
Еще один "-" авторам (переводчикам) задач!
0
Павел КрасновExpert
2 марта 2020, 12:41
))) ну и исключение не то ....
Эээх невнимательность моя ...
Как только в рабочее время начинаю делать задачки, так не менее 5-и попыток валидации. Все завязываю.
0
Ksenia VolkovaJava Developer в DXCMaster
2 марта 2020, 12:52
split не хочет воспринимать "." как разделитель
Просто точка - это спецсимвол в regex, надо было экранировать - "\\."
+1
hidden #598481
2 марта 2020, 12:55
split не хочет воспринимать точку как разделитель, потому что это не просто строка, а шаблон для регулярки, видишь подсказку "regex" рядом с аргументом?
Это значит, что внутри из этой строки будет скопилирован шаблон, а точка в шаблоне является спецсимволом, эквивалентно понятию "один произвольный символ".
Чтобы спецсимволы читались не как специальные, а как обычные, используй экранирование при помощи "\". Сам бэкслеш тоже является спецсимволом, поэтому его тоже надо экранировать еще одним бэкслешем. Итого
+3
Павел КрасновExpert
2 марта 2020, 13:31
жесть!
0