Валидатор: Убедись, что метод getFileContent возвращает полностью весь вычитанный контент, а не его часть.
package com.javarush.task.task16.task1630;
/*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. Для этого добавь вызов соответствующего метода.
Ожидаемый вывод:
[все тело первого файла]
[все тело второго файла]
* */
import java.io.*;
import java.util.ArrayList;
import java.util.List;
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 (Exception e) {
e.printStackTrace();
}
}
public static class ReadFileThread extends Thread implements ReadFileInterface{
private String fullFilename;
private String s = "";
public ReadFileThread(){
}
@Override
public void setFileName(String fullFileName) {
this.fullFilename = fullFileName;
}
@Override
public String getFileContent() {
return s;
}
@Override
public void start() {
try {
FileInputStream fstream = new FileInputStream(fullFilename);
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
while ((strLine = br.readLine()) != null) {
s+= strLine + " ";
}
fstream.close();
br.close();
}
catch (Exception 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();
//add your code here - добавьте код тут
System.out.println(f.getFileContent());
}
public interface ReadFileInterface {
void setFileName(String fullFileName);
String getFileContent();
void join() throws InterruptedException;
void start();
}
//add your code here - добавьте код тут
}