есть вот такая программа которая удаляет из файла совпадение по переменной int id = 19847; , вот собственно вопрос состоит в том что если BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\Михаил\\Desktop\\1.txt")); находится в верху то программа кидает ошибку , а файл становится пустой но если его переместить в низ под удаление copyFile.remove(remove); то всё работает нормально не пойму в чем причина?
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class bufferedreader {
public static void main(String[] args) throws IOException {
ArrayList<String> copyFile = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\Михаил\\Desktop\\1.txt"));
BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\Михаил\\Desktop\\1.txt"));
int id = 19847;
int remove = 0;
String s;
while ((s = reader.readLine()) != null){
copyFile.add(s);
}
for (int i = 0; i < copyFile.size();i++){
int z = Integer.parseInt(copyFile.get(i).substring(0,8).trim());
if (z == id){
remove = i;
}
}
copyFile.remove(remove);
// если сюда переместить BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\Михаил\\Desktop\\1.txt")); то всё ок
for (String sw: copyFile){
System.out.println(sw);
writer.write(sw + "\r\n");
}
reader.close();
writer.close();
}
}