Используем RandomAccessFile

  • 14
  • Недоступна
В метод main приходят три параметра: 1) fileName - путь к файлу; 2) number - число, позиция в файле; 3) text - текст. Считать текст с файла начиная с позиции number, длинной такой же как и длинна переданного текста в третьем параметре. Если считанный текст такой же как и text, то записать в конец ф
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (106)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Андрей 38 уровень, Иркутск
7 декабря 2020, 15:05
Внимание! В конец файла не нужно записывать СТРОКУ с ответом, как этого требует долбаный валидатор! Нужно просто дописать ответ в конец файла (не с новой строки, а прилепить его к содержимому файла)!
zdRusty 31 уровень, Оренбург
19 января, 08:48
Здесь имеется ввиду, что нужно использовать String, а не boolean.
Mike Starman 39 уровень, Киев
30 ноября 2020, 21:21
Решил все правильно - валя сказал "нит!" по предпоследнему пункту. Переставил местами сравниваемые в еквалс - "нит!". Думаю, что ж тебе надо, собака!? Попробовал сравнить через "==" - "нит!". Ну и "пошел в ср...у!" подумал я и загрузил решение с сервера - все тоже самое, только в трае с ресурсами и создается нафиг не нужный массив байтов, в который вычитывается текст чтоб потом присвоить строке. А вот так почему-то низззяя:
String textFromFile = String.valueOf(randomAccessFile.read(new byte[args[2].length()], 0, args[2].length()));
Кто-нибудь знает почему низззяя? Оператор сравнения точно такой же как в решении, почему не принимало... хз. Посему задаче, а точнее вале, заслуженная рыгачечная оценка
Ильнур 29 уровень, Москва
14 января, 19:58
А ты уверен в том нужно читать из файла? Я из условия понял что текст дается на в args[3]
Ильнур 29 уровень, Москва
14 января, 19:59
Может я не так понял?
zdRusty 31 уровень, Оренбург
19 января, 08:57
Нужно использовать конструктор new String(byte[] b, StandartChatsets.UTF_8).
Bonus 35 уровень
19 ноября 2020, 22:29
"Если считанный текст такой же как и text, то программа должна записать в конец переданного файла строку 'true'." СТРОКУ!!! Ок. пишем
randomAccessFile.write("\ntrue".getBytes());
Но валидатор это не принимает, потому что нужно писать не строку, а слово
randomAccessFile.write("true".getBytes());
"В методе main класса Solution необходимо использовать RandomAccessFile, который должен использовать файл, который приходит первым параметром."
File file = new File(args[0]);
RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw")
Это тоже валику не понравилось. Только
RandomAccessFile randomAccessFile = new RandomAccessFile(args[0], "rw")
zdRusty 31 уровень, Оренбург
19 января, 08:52
Имеется ввиду строчный тип, а не boolean. Ну File здесь, действительно, совершенно не нужен.
Андрей 36 уровень, Москва
4 ноября 2020, 20:23
Абсолютно косячный валик. Моё решение не принимал, только потому, что я имя файла и искомый текст сначала присвоил в переменную из аргументов и уже потом в условиях оперировал переменными. Если промежуточные переменные убрать - проходит.
Artem K. 30 уровень, Москва
8 ноября 2020, 15:02
Все в переменных и все проходит...
graybay 36 уровень, Самара
12 августа 2020, 12:33
Интересно зачем делать несколько разных проверяемых требований и красивые галочки, крестики к ним, если они "показывают зеленый" только если все требования выполнены одновременно. )))
teo_heel 41 уровень, Прокопьевск
15 августа 2020, 11:23
Ну как бы... видимо вы настолько плохо всё сделали, что аж...
Rodion 26 уровень, Astrakhan
20 июля 2020, 11:28
Ребят, помогите с кодировкой. Не могу разобраться. Задачу решил без проблем, валидатор прошел, но пишет в файл китайские иероглифы (или японские). Как сделать так, чтобы он записывал английские буквы, то есть мою оригинальную строку?
Лёхансан 27 уровень, Брест
10 декабря 2020, 21:30
Нужно поменять кодировку в самом файле. Я это делал с помощью Notepad++, у него есть вкладка "кодировка", где можно выбрать любую из предложенных... Наверно есть способы и проще)
Иван 38 уровень, Москва
18 июля 2020, 18:55
5 попыток, пока не допетрил, что в raf.read(bytes, 0, text.length()); нужно 2м параметром ставить 0, так как мы сдвигаем позицию через seek.
Андрей 36 уровень, Москва
4 ноября 2020, 20:07
Едрёна макарона! А ведь и правда :) Спасибо!
Лёхансан 27 уровень, Брест
10 декабря 2020, 21:42
Спасибо за подсказку! А я думал, что можно обойтись без seek, указав вторым оператором место, с которого нужно начинать чтение...
barracuda 32 уровень, Санкт-Петербург Expert
позавчера, 09:58
Спасибо!
Alex 39 уровень
1 апреля 2020, 07:07
Не могу понять зачем сначала использовать raf.seek(), а потом в raf.read указывать off = 0 Почему нельзя так?
raf.read(buff, Integer.valueOf(args[1]), args[2].length)
Евгений 41 уровень, Нижний Новгород Expert
7 июня 2020, 16:21
В оф.документации написано, что buff - буфер, в которой писать off - то место, откуда писать в массив (т.е. с какой ячейки в массиве начинать заполнение данными), len - сколько байт читать. Короче, я тоже сначала над этим задумался, но off здесь относится к массиву, в которой идёт запись, а не к файлу.
RomanBk 30 уровень
26 марта 2020, 18:01
Счастливое число 😏
Veryprosto 35 уровень, Екатеринодар
5 марта 2020, 17:21
Уж не знаю, граммар-Наци ли я))) но длиНа и длиНой пишется с одной "Н".