Consigo fazê-lo funcionar sem qualquer referência a "class" ou "ClassLoader".
Digamos que tenhamos três cenários com o local do arquivo 'example.file' e seu diretório de trabalho (onde o aplicativo é executado) é home / mydocuments / program / projects / myapp:
a) Uma subpasta descendente do diretório de trabalho: myapp / res / files / example.file
b) Uma subpasta não descendente do diretório de trabalho: projects / files / example.file
b2) Outra subpasta não descendente do diretório de trabalho: program / files / example.file
c) Uma pasta raiz: home / mydocuments / files / example.file (Linux; no Windows, substitua home / por C :)
1) Pegue o caminho certo: 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"
Basicamente, se for uma pasta raiz, inicie o nome do caminho com uma barra inicial. Se for uma subpasta, nenhuma barra deve estar antes do nome do caminho. Se a subpasta não for descendente do diretório de trabalho, você deverá fazer o cd usando "../". Isso diz ao sistema para subir uma pasta.
2) Crie um objeto File passando o caminho certo:
File file = new File(path);
3) Agora você está pronto para ir:
BufferedReader br = new BufferedReader(new FileReader(file));