package com.javarush.test.level16.lesson13.home10; import java.io.*; import java.util.Scanner; /* Последовательный вывод файлов 1. Разберись, что делает программа. 2. В статическом блоке считай 2 имени файла firstFileName и secondFileName. 3. Внутри класса Solution создай нить public static ReadFileThread, которая реализует интерфейс ReadFileInterface (Подумай, что больше подходит - Thread или Runnable). 3.1. Метод setFileName должен устанавливать имя файла, из которого будет читаться содержимое. 3.2. Метод getFileContent должен возвращать содержимое файла. 3.3. В методе run считай содержимое файла, закрой поток. Раздели пробелом строки файла. 4. Подумай, в каком месте нужно подождать окончания работы нити, чтобы обеспечить последовательный вывод файлов. 4.1. Для этого добавь вызов соответствующего метода. Ожидаемый вывод: [все тело первого файла] [все тело второго файла] */ 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(); } catch (IOException e) { e.printStackTrace(); } } 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(); System.out.println(f.getFileContent()); } public static interface ReadFileInterface { void setFileName(String fullFileName); String getFileContent(); void join() throws InterruptedException; void start(); } public static class ReadFileThread extends Thread implements ReadFileInterface { String fileName; String fileContent; @Override public void setFileName(String fileName) { this.fileName = fileName; } @Override public String getFileContent() { return fileContent; } public void run() { try { StringBuilder stringBuilder = new StringBuilder(); File scFile = new File(fileName); Scanner scanner = new Scanner(scFile); while(scanner.hasNext()) { stringBuilder.append(scanner.next()); stringBuilder.append(" "); } fileContent = (stringBuilder.toString().trim()); } catch (FileNotFoundException e) { e.printStackTrace(); } } } }
Leave A Comment