• ,

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);
}
}

18 Уровень дается мне очень тяжко уже 2 задача а я решить не могу подскажите что не так

18 Уровень дается мне очень тяжко уже 2 задача а я решить не могу подскажите что не так

package com.javarush.test.level18.lesson10.home09;

/* Файлы и исключения
Читайте с консоли имена файлов
Если файла не существует (передано неправильное имя файла), то
перехватить исключение FileNotFoundException,
вывести в консоль переданное неправильное имя файла и
завершить работу программы.
Закрыть потоки. Не использовать try-with-resources
Не используйте System.exit();
*/

import java.io.*;

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        FileReader fileInputStream =null;
        try{
            while (true){
                fileInputStream = new FileReader(reader.readLine());
            }
        }catch (FileNotFoundException e){
            System.out.println("передано неправильное имя файла");
            fileInputStream.close();
            return;
        }
        finally
        {  reader.close();
        }


    }

    }

  • ,

level19.lesson05.task03

Здравствуйте!

Решая данную задачу, назрел вопрос. Собственно суть его проста, как лучше решать задачи? Строго по лекциям вникая в суть задачи и используя самые простые методы для понимания работы в целом или же как умеем/нагуглили/прочитали в книжке даже если это коряво и костыль по сути дела?

Приведу пример. В данной задаче нужно:

/* Выделяем числа
Считать с консоли 2 имени файла.
Вывести во второй файл все числа, которые есть в первом файле.
Числа выводить через пробел.
Закрыть потоки ввода-вывода.

Пример тела файла:
12 text var2 14 8v 1

Результат:
12 14 1
*/


Так вот, я сделал это просто. Использую BufferedReader считывал строки с файла, делал split по пробелу, и тогда в отдельной функции проверял, являеться ли строка в массиве числовой или нет. Если нет то ничего не делал, если да то писал в файл добавляя пробел. Тестирование прошло, но… правильно ли я подошел к задаче?

Может надо было использовать ТОЛЬКО FileReader/FileWriter и только метод .read()/.write() для решения, как нам показывали в лекциях? Считывая побайтово с файла и каким то образом проверяя находу или в массиве отдельно символы?