Используем RandomAccessFile

  • 14
  • Недоступна
В метод main приходят три параметра: 1) fileName - путь к файлу; 2) number - число, позиция в файле; 3) text - текст. Считать текст с файла начиная с позиции number, длинной такой же как и длинна переданного текста в третьем параметре. Если считанный текст такой же как и text, то записать в конец ф
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (83)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Rodion25 уровень, Astrakhan
20 июля, 11:28
Ребят, помогите с кодировкой. Не могу разобраться. Задачу решил без проблем, валидатор прошел, но пишет в файл китайские иероглифы (или японские). Как сделать так, чтобы он записывал английские буквы, то есть мою оригинальную строку?
Иван35 уровень, Москва
18 июля, 18:55
5 попыток, пока не допетрил, что в raf.read(bytes, 0, text.length()); нужно 2м параметром ставить 0, так как мы сдвигаем позицию через seek.
Alex39 уровень
1 апреля, 07:07
Не могу понять зачем сначала использовать raf.seek(), а потом в raf.read указывать off = 0 Почему нельзя так?
raf.read(buff, Integer.valueOf(args[1]), args[2].length)
Евгений40 уровень, Нижний Новгород
7 июня, 16:21
В оф.документации написано, что buff - буфер, в которой писать off - то место, откуда писать в массив (т.е. с какой ячейки в массиве начинать заполнение данными), len - сколько байт читать. Короче, я тоже сначала над этим задумался, но off здесь относится к массиву, в которой идёт запись, а не к файлу.
RomanBk30 уровень
26 марта, 18:01
Счастливое число 😏
Veryprosto35 уровень, Екатеринодар
5 марта, 17:21
Уж не знаю, граммар-Наци ли я))) но длиНа и длиНой пишется с одной "Н".
Ner'Zhul25 уровень
15 февраля, 09:41
Что то я не догоняю. Протестировал у себя вот такой код:
public static void main(String... args) throws IOException {
        RandomAccessFile raf = new RandomAccessFile("D:/Test.txt", "r");
        raf.seek(3);

        byte[] fromFile = new byte[5];
        raf.read(fromFile, 0, 5);

        System.out.println(new String(fromFile));
    }
В самом файле алфавит: abcdefghijklmnopqrstuvwxyz Вывод на консоль
abcde
В чем смысл сдвига seek тогда? Читать он начал ровно сначала файла? Валидатор задачу принял(((
Алексей40 уровень, Москва
18 февраля, 13:02
Скопировал код, проверил. Вывод в консоль:
defgh
Ner'Zhul25 уровень
21 февраля, 07:49
Все верно, спасибо за ответ. Сегодня вернулся к курсу и запустил код повторно. Уже как надо. Видимо idea тупила. Нужно было перезапустить.
Никита Сычев28 уровень, Санкт-Петербург
6 мая, 20:34
такой же баг... минут 20 мучился....ц. зато валя принял норм)
Ярослав26 уровень
10 января, 12:16
Пять попыток из-за глупости. String s = new String(bytes); Вместо этой простой конструкции писал String s = Arrays.toString(bytes) Ну зачем блеать?
Vorlock31 уровень, Днепр
29 декабря 2019, 15:06
будьте внимательны что с чем сравниваете! у меня валидация не проходила до тех пор пока в equals не поменял местами сравниваемые значения.
Александр25 уровень
16 декабря 2019, 18:19
Валидатор похоже некорректный. Принимает, хотя не должен
String readed = new String(buff);
text.equals(readed)
Не принимает
String readed = new String(buff, 0, countReadedBytes);
text.equals(readed)
То есть для него "текст " эквивалентен "текст".
Роман41 уровень, Пермь
22 ноября 2019, 06:43
Кто-нибудь почините валидатор для этой задачи. Вообще не понял, что он хочет. Такое ощущение, что все тесты написаны в одном файле. И он либо проходит, либо валится.