1. Разберись, что делает программа.
  2. В статическом блоке считай 2 имени файла firstFileName и secondFileName.
  3. Внутри класса Solution создай нить public static ReadFileThread, которая реализует интерфейс ReadFileInterface (Подумай, что больше подходит — Thread или Runnable). 3.1. Метод setFileName должен устанавливать имя файла, из которого будет читаться содержимое.

3.2. Метод getFileContent должен возвращать содержимое файла.

3.3. В методе run считай содержимое файла, закрой поток. Раздели пробелом строки файла.

  1. Подумай, в каком месте нужно подождать окончания работы нити, чтобы обеспечить последовательный вывод файлов.
  2. List item

4.1. Для этого добавь вызов соответствующего метода.

package com.javarush.task.task16.task1630;

import java.io.*;

public class Solution { public static String firstFileName; public static String secondFileName;

static {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    try {
        firstFileName = reader.readLine();
        secondFileName = reader.readLine();
        reader.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
//add your code here - добавьте код тут

public static void main(String[] args) throws InterruptedException {
    systemOutPrintln(firstFileName);
    systemOutPrintln(secondFileName);
}

public static void systemOutPrintln(String fileName) throws InterruptedException {
    ReadFileInterface f = new ReadFileThread();
    f.setFileName(fileName);
    f.start();
    f.join();
    //add your code here - добавьте код тут
    System.out.println(f.getFileContent());
}

public interface ReadFileInterface {

    void setFileName(String fullFileName);

    String getFileContent();

    void join() throws InterruptedException;

    void start();
}

private static class ReadFileThread extends Thread implements ReadFileInterface {
    private StringBuilder builder = new StringBuilder();
    private BufferedReader reader;

    @Override
    public void setFileName(String fullFileName) {
        try {
            reader =  new BufferedReader(new InputStreamReader(new FileInputStream(fullFileName)));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public String getFileContent() {

        try {
            return builder.toString();
        } catch (NullPointerException e) {
            System.out.println(e);
            return null;
        }
    }

    @Override
    public void run() {
        String result;
        try {
            while ((result = reader.readLine()) != null){

                if (result.trim().length() > 0){
                    builder.append(result.trim()).append(" ");
                }
            }

            reader.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e){

        }
    }
}

//add your code here - добавьте код тут

}

Вродо бы учёл все сказанное Здесь и все равно не проходит тест. У кого получилось, помогите, пожалуйста.

задан 11 Мар, 16:03

hamomel's gravatar image

hamomel
111
одобрено: 0%

закрыто 20 Сен, 16:23

AndyRad's gravatar image

AndyRad
13.1k29

Задание?

(11 Мар, 16:06) vampirit

Вопрос был закрыт по следующей причине: "Problem is not reproducible or outdated" AndyRad 20 Сен, 16:23


SetFileName что-то не то у вас делает. Судя по названию, он должен менять имя файла, а у вас просто открывает поток чтения с консоли, при том не закрывает его.

ссылка

опубликован 11 Мар, 16:08

vampirit's gravatar image

vampirit
9.8k19
одобрено: 34%

Добавил задание. SetFileName должен делать что-то типа того что он и делает, судя по рекомендациям в других постах. Сначала он задавал имя файла через переменную класса, но тоже не проходило валидацию. Поток закрывается в методе run.

(12 Мар, 04:13) hamomel

Следить за вопросом

По Email:

После авторизации вы сможете подписаться на любые обновления здесь

Основы Markdown

  • *italic* or _italic_
  • **bold** or __bold__
  • ссылка:[текст](http://url.com/ "заголовок")
  • изображение?![alt текст](/path/img.jpg "заголовок")
  • нумерованный список: 1. Foo 2. Bar
  • Для того чтобы добавить разрыв строки просто добавьте два пробела.
  • основные HTML тэги, также поддерживаются

Тэги:

×3,808
×10

Задан: 11 Мар, 16:03

Просмотров: 453 раз

Отредактирован: 20 Сен, 16:23