• ,

com.javarush.task.task18.task1825 Работает, не проходит тестирование

Код рабочий, проверял. Пишет, что у меня не выполнено ни одно условие кроме 1-го

package com.javarush.task.task18.task1825;

/* 
Собираем файл
Собираем файл из кусочков.
Считывать с консоли имена файлов.
Каждый файл имеет имя: [someName].partN.
Например, Lion.avi.part1, Lion.avi.part2, …, Lion.avi.part37.
Имена файлов подаются в произвольном порядке. Ввод заканчивается словом «end«.
В папке, где находятся все прочтенные файлы, создать файл без суффикса [.partN].
Например, Lion.avi.
В него переписать все байты из файлов-частей используя буфер.
Файлы переписывать в строгой последовательности, сначала первую часть, потом вторую, …, в конце — последнюю.
Закрыть потоки.
Требования:
1. Программа должна считывать имена файлов с консоли, пока не будет введено слово "end".
2. Создай поток для записи в файл без суффикса [.partN] в папке, где находятся все считанные файлы.
3. В новый файл перепиши все байты из файлов-частей *.partN.
4. Чтение и запись должны происходить с использованием буфера.
5. Созданные для файлов потоки должны быть закрыты.
*/
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
public class Solution {
    public static void main(String[] args) throws IOException{
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<File> list = new ArrayList<>();
        while (true) {
            String name = reader.readLine();
            if (!name.equals("end"))
            list.add(new File(name));
            else break;
        }
/*Названия одинаковые, соответственно сортировка листа работает корректно от part1 до partN */
        Collections.sort(list);
        //файл создается в папке с предыдущими файлами
        String resultFile = list.get(0).getAbsolutePath().split(".part")[0] + "";
        File destFile = new File(resultFile);
        destFile.createNewFile();
        FileOutputStream outStream = new FileOutputStream(destFile);
//записывает все буфером
        for (File search : list) {
            FileInputStream inStream = new FileInputStream(search);
            byte[] buffer = new byte[inStream.available()];
            while (inStream.available() > 0) {
                int count = inStream.read(buffer);
                outStream.write(buffer,0,count);
            }
            inStream.close();
        }
        outStream.close();
        reader.close();
    }
}


Ввод:

*C:My programsCodingJavaRushTasks2.JavaCoresrccomjavarushtasktask18task1825avi.part3

C:My programsCodingJavaRushTasks2.JavaCoresrccomjavarushtasktask18task1825avi.part1

C:My programsCodingJavaRushTasks2.JavaCoresrccomjavarushtasktask18task1825avi.part2

end*

Вывод: (создается файл «avi» который содержит инфу 1,2,3 файлов в этой последовательности) «OneTwoThree»
  • ,

level20.lesson02.task01

Доброго времени суток.Помогите пожалуйста, друзья.Не понимаю, почему у меня ничего не происходит.Точнее я понимаю, что запись идёт неправильно, но исправить не получается. Ниже даю весь код с условием, но суть заключена внизу в методах save() и load().Заранее спасибо.

/* Читаем и пишем в файл: Human
Реализуйте логику записи в файл и чтения из файла для класса Human
Поле name в классе Human не может быть пустым
В файле your_file_name.tmp может быть несколько объектов Human
Метод main реализован только для вас и не участвует в тестировании
*/
public class Solution {
    public static void main(String[] args) {
        //you can find your_file_name.tmp in your TMP directory or fix outputStream/inputStream according to your real file location
        //вы можете найти your_file_name.tmp в папке TMP или исправьте outputStream/inputStream в соответствии с путем к вашему реальному файлу
        try {

            File your_file_name = File.createTempFile("E:\\do.txt", null);
            OutputStream outputStream = new FileOutputStream(your_file_name);
            InputStream inputStream = new FileInputStream(your_file_name);

            Human ivanov = new Human("Ivanov", new Asset("home"), new Asset("car"));
            ivanov.save(outputStream);
            outputStream.flush();

            Human somePerson = new Human();
            somePerson.load(inputStream);
            //check here that ivanov equals to somePerson - проверьте тут, что ivanov и somePerson равны
            inputStream.close();

        } catch (IOException e) {
            //e.printStackTrace();
            System.out.println("Oops, something wrong with my file");
        } catch (Exception e) {
            //e.printStackTrace();
            System.out.println("Oops, something wrong with save/load method");
        }
    }


    public static class Human {
        public String name;
        public List<Asset> assets = new ArrayList<>();

        public Human() {
        }

        public Human(String name, Asset... assets) {
            this.name = name;
            if (assets != null) {
                this.assets.addAll(Arrays.asList(assets));
            }
        }

        public void save(OutputStream outputStream) throws Exception {
            PrintWriter writer = new PrintWriter(outputStream);

            String isNameHere = name != null ? "yes" : "no";
            writer.print(isNameHere);
            if (name!=null)
                writer.println(this.name);
            if(assets!=null)
            {
                for (Asset as: assets)
                {
                    writer.println(as.getName());
                    writer.println(as.getPrice());
                }
            }
            writer.flush();
            writer.close();

        }

        public void load(InputStream inputStream) throws Exception {
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
            String str=reader.readLine();
            if (str.equals("yes"))
            {
                this.name=reader.readLine();
                Asset assset=new Asset(reader.readLine());
                assset.setPrice(Double.parseDouble(reader.readLine()));
                this.assets.add(assset);
            }

        }
    }
}
  • ,

Запись в файл(level19.lesson05.task04)

Всем привет!
Решение проходит, но остается ошибка.
Во второй файл пишет строки без переноса, как можно это исправить?

Заранее спасибо за помощь.

  1. public class Solution {
  2. public static void main(String[] args) throws IOException
  3. {
  4. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  5. String file1 = reader.readLine();
  6. String file2 = reader.readLine();
  7. BufferedReader readFile = new BufferedReader(new FileReader(file1));
  8. FileOutputStream fileWrite = new FileOutputStream(file2);
  9. ArrayListtext = new ArrayList();

    String s;
    while((s = readFile.readLine()) != null)
    {
    String newString = s.replace('.', '!');
    text.add(newString);
    }

    for(String f: text)
    {
    fileWrite.write(f.getBytes());
    }


    reader.close();
    readFile.close();
    fileWrite.close();


    }
    }