Перепутанные байты

  • 16
  • Недоступна
Напиши программу, которая считывает с консоли путь к файлу1 и путь к файлу2. Далее все байты из файла1 записывает в файл2, но при этом меняет их местами по такому принципу: первый со вторым, третий с четвертым, и т.д. Если последний байт в файле1 нечетный, то пишем его в файл2 как есть. Для чтения и
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (134)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Pavel V.
Уровень 19, Russian Federation
7 августа, 00:15
Решил криво, несмотря на то что подглядывал в правильное решение. Сначала проверял является ли массив байт нечетным, и если да, сразу записывал последний элемент массива. Получилось вообще два цикла, для четного и нечетного массивов. Правильное решение теперь кажется очень красивым.
slar69
Уровень 16, Москва, Russian Federation
6 августа, 19:05
Ну вот честно говоря такое обескураживает. Когда ты используешь метод newOutputStream, а валидатор тебе пишет: убедись, что ты используешь метод newOutputStrem. Как-то вообще неясно, что дальше-то делать? Убедился. Программа работает, задачу выполняет, проверил на файлах. Тебе пишут: убедись, что ты используешь то, что ты используешь.
slar69
Уровень 16, Москва, Russian Federation
6 августа, 19:22
Ну кто бы мог подумать, что дело в обертывании. Так-то задача на удивление не сложная. Если не считать того, что пришлось залезть в документацию, чтобы прочесть про методы, про класс Paths, которые надо было использовать по условию. Решил без буфферизации, без массивов, без цикла for.
bkKpoko
Уровень 7, Санкт-Петербург, Russian Federation
5 августа, 15:49
Как и все очень долго тупил над задачей, но как разобрался со считыванием файлов, придумал-таки, наконец, свое решение, но не через цикл for как в решении и обсуждениях, а через while. Мне показалось, что заводить массив под весь файл довольно громоздко( + не хотел мучиться с инкрементами), решил сразу при чтении менять пары местами. Надеюсь знающие люди оценят, может такая практика плохая, и у этого решения много минусов.
byte[] buffer = new byte[2];
            int arraySize = inputStream.available();
            while (inputStream.available() > arraySize % 2)
            {
                var read = inputStream.read(buffer);

                var tmp = buffer[0];
                buffer[0] = buffer[1];
                buffer[1] = tmp;

                outputStream.write(buffer, 0, read);
            }
            if (inputStream.available() != 0)
            {
                outputStream.write(inputStream.read());
            }
Tomhetted
Уровень 17, Санкт-Петербург , Россия
26 июля, 17:27
Вроде все понял, и даже в try with resources в скобках сам без подсказок входные данные правильно ввел, но мой уставший после работы моск поломался на этих изменениях инкремента в цикле for
wf
Уровень 33, Тула, Russian Federation
20 июля, 12:03
Еле-еле решил, и то с помощью чей-то-матери и "Правильного решения"(((
Afanasii
Уровень 21
16 июля, 23:16
Если последний байт в файле1 нечетный, то пишем его в файл2 как есть - а где проверка на это в готовом решении? Там ведь только случай, если ласт байт в файле 1 четный
Anton Martov
Уровень 10, Москва, Russian Federation
24 июля, 14:28
если байтов - четное количество, то не будет такого исхода, что мы окажемся на последнем байте, так как индекс у него - нечетный, а наш цикл прибавляет к счётчику по 2 начиная от 0.
Владимир
Уровень 9, Санкт-Петербург, Russian Federation
14 июля, 19:05
Только у меня сложилось впечатление, что вообще от слова совсем, не понятно?
4 июля, 08:41
Вот не пойму, почему валидатор не пропускает в коде использую
OutputStream outputStream = Files.newOutputStream(outPath);
outputStream.write(outBuffer);
outputStream.close();
валидатор пишет : Убедись, что для записи в файл ты используешь метод newOutputStream класса Files. Поток записи в файл (OutputStream) должен быть закрыт.
Никита Ильин
Уровень 28, Вязьма, Russian Federation
13 июля, 16:49
используй try, у тебя может вылететь IOException
Богдан
Уровень 17, Феодосия, Россия
2 июля, 20:49
Да что ж такое то, сначала минут 10 не мог догнать, почему у меня читается только одна строка, пока не отдал на проверку валидатору и тот не сказал, что по первому пункту всё норм... Только тогда я догадался, что запускаю предыдущую задачу, извечная проблема 😅🤦‍♂️🤦‍♂️🤦‍♂️ Если знаете, какой-то лайфхак черканите в коммент.📄👇 P.S. а по поводу задания - лайк👍, наконец-то что-то самому с нуля задали написать, а не добавить одну строчку кода в уже написанный.
Diar Kassymov
Уровень 16, Астана, Kazakhstan
11 июля, 15:12
я обычно открываю project (дерево), правой кнопкой запускаю run и всегда IDE запускает верную сессию. (если даже была предыдущая, вместо нее становится актуальная) а потом уже на проверку пускаю или дебагер включаю.
Владыка Ксеноморф
Уровень 25, San Francisco, United States
27 июня, 14:45
Помогите, столкнулся с проблемой, выскакивает ошибка AccessDeniedException. По ощущениям все решил правильно, но после сканнера такая ситуация и дальше ничего не идет. Кто сталкивался?