Java-код:
for (int i=0; i<13000; i++){
new FileReader("helloWorld.txt");
}
дает:
> Exception in thread "main" java.io.FileNotFoundException: helloWorld.txt (Too many open files)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
at java.base/java.io.FileReader.<init>(FileReader.java:60)
at Main.main(Main.java:14)
И это нормально, так как не хватает системных ресурсов. Но я понятия не имею, почему это работает:
for (int i=0; i<13000; i++){
new BufferedReader(new FileReader("helloWorld.txt"));
}
Поскольку даже между FileReader и BufferedReader есть много отличий, все еще существует: новый FileReader ("helloWorld.txt") - так что, не должно ли он выходить из ресурсов, как в 1-м случае?