@ArtAVi

Как синхронизировать по файлу?

Подскажите пожалуйста, как сделать, чтобы потоки синхронизировались по файлу "fileWithAnAdress.txt"
public class Main {

    public static void main(String[] args) {
        boolean delete1 = (new File("fileWithoutGarbage.txt")).delete();
        Thread thread = new Thread(new CreateFileService());
        thread.start();
        Thread thread1 = new Thread(new ReadFileService());
        thread1.start();
    }
}
public class CreateFileService implements Runnable {

    @Override
    public void run() {
       List<String> list = new ArrayList<>();
        list.add("'С:\\WebServers\\home\\testsite\\www\\myfile1.txt'");
        list.add("'С:\\WebServers\\home\\testsite\\www\\myfile2.txt'");
        list.add("'С:\\WebServers\\home\\testsite\\www\\myfile3.txt'");
        list.add("'С:\\WebServers\\home\\testsite\\www\\myfile4.txt'");
        try {
            BufferedWriter bw = new BufferedWriter(new FileWriter("fileWithAnAdress.txt"));
            for (String s : list) {
                bw.write(s);
                bw.write(System.lineSeparator());
            }
            bw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
public class ReadFileService implements Runnable {

    @Override
    public void run() {
        List<String> lines = new ArrayList<>();
        List<String> newLines = new ArrayList<>();
        try {
            BufferedReader br = new BufferedReader(new FileReader("fileWithAnAdress.txt"));
            String line;
            while ((line = br.readLine()) != null) {
                lines.add(line);
            }
            System.out.println(lines);
            for (String s : lines) {
                String newString = s.substring(s.lastIndexOf('\\') + 1, s.lastIndexOf('.'));
                newLines.add(newString);
            }
            System.out.println(newLines);
        } catch (IOException e) {
            e.printStackTrace();
        }
        try (BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("fileWithoutGarbage.txt"))) {
            for (String newLine : newLines) {
                bufferedWriter.write(newLine);
                bufferedWriter.write(System.lineSeparator());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        File file = new File("fileWithoutGarbage.txt");
        System.out.println(file.length() + " byte");
    }
}
  • Вопрос задан
  • 97 просмотров
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
42
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы