• ,

task32.task3210 или очередная бяка валидатора.

Уже невозможно просто бороться с валидатором, но может я всё-таки где-то не прав?
Условие:
Используем RandomAccessFile

В метод main приходят три параметра:
1) fileName — путь к файлу;
2) number — число, позиция в файле;
3) text — текст.

Считать текст с файла начиная с позиции number, длинной такой же как и длинна переданного текста в третьем параметре.

Если считанный текст такой же как и text, то записать в конец файла строку ‘true‘, иначе записать ‘false‘.
Используй RandomAccessFile и его методы seek(long pos), read(byte b[], int off, int len), write(byte b[]).
Используй convertByteToString(byte readBytes[]) для конвертации считанной строчки в текст
.

Вот мой код:
public class Solution {
public static void main(String... args) throws IOException {
    RandomAccessFile file=new RandomAccessFile(args[0],"rw");
    int n=Integer.parseInt(args[1]);
    file.seek(n);
    String text=args[2];
    byte[] fileText=new byte[(int)file.length()];
    file.read(fileText,0,text.length());
    file.seek(file.length());
    String shoudBeWritten="";
    if(convertByteToString(fileText).equals(text))shoudBeWritten="true";
    else if(!convertByteToString(fileText).equals(text))shoudBeWritten="false";
    file.writeChars(shoudBeWritten);
    file.close();
}
private static String convertByteToString(byte readBytes[]){
    return String.valueOf(readBytes);
}
}

1 комментарий

zzzz
new byte[(int)file.length()]

тут надо размер искомого текста брать, а не размер файла.

if(convertByteToString(fileText).equals(text))shoudBeWritten="true";
    else if(!convertByteToString(fileText).equals(text))shoudBeWritten="false";

а что запишется, если вы не попадете ни в одну ветку (понятно, что это маловероятно, но все же).
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.