Lo hago funcionar sin ninguna referencia a "clase" o "ClassLoader".
Digamos que tenemos tres escenarios con la ubicación del archivo 'example.file' y su directorio de trabajo (donde se ejecuta su aplicación) es home / mydocuments / program / projects / myapp:
a) Una subcarpeta que desciende al directorio de trabajo: myapp / res / files / example.file
b) Una subcarpeta que no desciende al directorio de trabajo: projects / files / example.file
b2) Otra subcarpeta que no desciende al directorio de trabajo: program / files / example.file
c) Una carpeta raíz: home / mydocuments / files / example.file (Linux; en Windows reemplace home / con C :)
1) Obtenga el camino correcto: a) String path = "res/files/example.file";
b) String path = "../projects/files/example.file"
b2) String path = "../../program/files/example.file"
c)String path = "/home/mydocuments/files/example.file"
Básicamente, si se trata de una carpeta raíz, inicie el nombre de la ruta con una barra diagonal. Si es una subcarpeta, no debe haber una barra inclinada antes del nombre de la ruta. Si la subcarpeta no desciende al directorio de trabajo, debe cd a ella usando "../". Esto le dice al sistema que suba una carpeta.
2) Cree un objeto File pasando la ruta correcta:
File file = new File(path);
3) Ahora estás listo para ir:
BufferedReader br = new BufferedReader(new FileReader(file));