JavaRush /Java блог /Архив info.javarush /Вопрос по RandomAccessFile
Morituros
8 уровень

Вопрос по RandomAccessFile

Статья из группы Архив info.javarush
Всем привет. Вопрос связан с задачей level18.lesson10.bonus03. Вопрос в следующем. Есть файл(filefileName) с несколькими строками определенной длины(каждая строка начинается с новой строчки), к примеру:
аааа ааааа ааааа bbbb bbbbb bbbbb cccc ccccc ccccc dddd ddddd ddddd
Мне нужно заменить строку "bbbb bbbbb bbbbb" на новую строку(newStroka = "1111 11111 11111", длина у нее такая же как и у тех что в файле). Использую следующий код: RandomAccessFile file = new RandomAccessFile(fileName, "rw"); // задаю длину, для args StringBuilder idStr = new StringBuilder(); idStr.append(args[1]); idStr.setLength(8); String lineIdStr = idStr.toString().replace('\u0000', '\u0020'); String line = null; //цикл по файлу. В line считывается 1 строка за проход while ((line = file.readLine()) != null) { System.out.println(line.length()); /* определяю какую строку нужно поменять. StartWith не лучший способ, но код у меня сохранился именно с ним */ if (line.startsWith(lineIdStr)) { /* Поидее эти строчки должны работать так: В pos, сохраняем позицию курсора перед считаной строкой line. И мы перезаписываем требуюемую строку. Но после этого следующая строка бьется и записывается не правильно"*/ long pos = file.getFilePointer() - line.length() - 2; file.seek(pos); file.write(newStroka.getBytes()); } } file.close(); В итоге после выполнения этого кода в файле будет следующее:
аааа ааааа ааааа 1111 11111 11111ссс ссссс dddd ddddd ddddd
Вопрос почему так?
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ