Q:

Имя файла в стримах. new File

FileReader reader = new FileReader(new File(r.readLine()));
FileReader reader = new FileReader(r.readLine());

Есть ли разница между объявлениями имен для стримов и что нам дает new File().Или же он сам прописывается , если не написали ?

A:

Разницы нет, т.к. если посмотреть на коструктор, где передается строка, то увидим следующее:
public FileReader(String fileName) throws FileNotFoundException {
    super(new FileInputStream(fileName));
}

public FileInputStream(String name) throws FileNotFoundException {
    this(name != null ? new File(name) : null);
}

А вот коструктор, где файл
public FileReader(File file) throws FileNotFoundException {
    super(new FileInputStream(file));
}

Как видим, в обоих случаях вызывается один и тот же конструктор у FileInputStream

