Lo faccio funzionare senza alcun riferimento a "class" o "ClassLoader".
Diciamo che abbiamo tre scenari con la posizione del file 'esempio.file' e la tua directory di lavoro (dove viene eseguita la tua app) è home / mydocuments / program / projects / myapp:
a) Una sottocartella che discende dalla directory di lavoro: myapp / res / files / example.file
b) Una sottocartella non discendente dalla directory di lavoro: progetti / file / esempio. file
b2) Un'altra sottocartella non discendente dalla directory di lavoro: program / files / example.file
c) Una cartella principale: home / mydocuments / files / example.file (Linux; in Windows sostituisci home / con C :)
1) Prendi la strada giusta: 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"
Fondamentalmente, se si tratta di una cartella principale, avviare il nome del percorso con una barra iniziale. Se si tratta di una sottocartella, nessuna barra deve essere prima del nome del percorso. Se la sottocartella non discende dalla directory di lavoro, è necessario eseguirne il cd utilizzando "../". Questo dice al sistema di salire di una cartella.
2) Crea un oggetto File passando il percorso giusto:
File file = new File(path);
3) Ora sei a posto:
BufferedReader br = new BufferedReader(new FileReader(file));