Diretorio na pasta para o filereader

Oi galera, sou iniciante no java e estou fazendo um trab da faculdade e estou com um problema que parece bobo mas esta me atrapalhando.
No trabalho eu tenho que ler um arquivo de entrada e ultilizei o filereader(“o diretorio do meu pc”) para ler o arquivo com o diretorio completo do meu pc até o arq txt, entretanto tenho que enviar em uma pasta o arquivo java junto com esse arquivo de entrada para o professor executar.
Porem é claro que o diretorio do meu pc é diferente do professor, como eu faço para o filereader() ler o arquivo txt na pasta.
Segue abaixo o meu cod:

package ad2;
import java.io.;
import java.util.
;

class lerArqEntrada{
public lerArqEntrada(){
}
// public List pegaNomes(){
// return nomes;
// }

}
class criarArqSaida {
List nomes;
List NeK;
public criarArqSaida(List nomes, List NeK ){
this.nomes=nomes;
this.NeK=NeK;
// Gravar arquivo
BufferedWriter escreve;
try{
escreve = new BufferedWriter(new FileWriter(“C:\Users\rafae\Desktop\saida-ArqEntrada.txt”));//LEMBRETE: antes de entregar mudar diretorio para pasta do envia
for(int g=1;g<NeK.size();g++){ //loop gravar linha a linha na saida
resolveJosephus resultado = new resolveJosephus();
escreve.write(resultado.resolveJosephus(nomes, NeK,g));
escreve.newLine();
}
escreve.close();
} catch (IOException e){
System.out.println(“Não foi possivel criar o arquivo!!!”);
}
}
}
class resolveJosephus{
List nomes;
List NeK;

public String resolveJosephus(List<String> nomes, List<Integer> NeK,int g){
    this.nomes=nomes;
    this.NeK=NeK;
    // Resolver Problema de Josephus

        List<String> nomeCP = new ArrayList<>();       
        nomeCP.addAll(nomes);
        int cont=0, idx = -1;
        do{
            cont+=1;
            idx+=1;
       
            if(cont==NeK.get(g)){   // para "get(1)", o "1" deve ser substituido por cada "k" ("n" contem quantos K's tem)
                nomeCP.remove(idx);
                cont=1;
                System.out.println(nomeCP);//retirar  !!!!!!!
            }
            if((idx==nomeCP.size()-1)){idx=-1;} else if(idx==nomeCP.size()) {idx=0;}
        } while(1!=nomeCP.size());
        String resp;
        resp = NeK.get(g)+" "+nomeCP.get(0);  
        return resp; 
}

}

public class AD2 {
public static void main(String[] args) {
// Ler arquivo e separar e colocar nomes em 1 array e valores de N e K em outro array
int fim=0, i=0;
List nomes = new ArrayList<>();
List NeK = new ArrayList<>();
boolean EhNK = false;
BufferedReader le;
try{
le = new BufferedReader(new FileReader(“C:\Users\rafae\Desktop\ArqEntrada.txt”));//LEMBRETE: antes de entregar mudar diretorio para pasta do envia
while (le.ready()){
nomes.add(le.readLine()); //coloca as linhas do arq no array
if (EhNK){NeK.add(Integer.parseInt(nomes.get(i)));} // colocando no array o “N” e os “k”

            if(nomes.get(i).equals("FIM")){ // indica quando começa  "N" e "K"
               EhNK = true;
               fim = i;//a posição de Fim é guardada
            }
            i++;
        }    
        System.out.println(nomes);//retirar  !!!!!!!
        System.out.println(NeK);//retirar  !!!!!!!
        le.close();           
    } catch (IOException e){
        System.out.println("Arquivo não encontrado");
    }    
        i = 0;     //Remove o "N" e "K" do array "nome"
        while(i!= NeK.size()+1){  
           nomes.remove(fim);
           i++;   
       }          
        System.out.println(nomes);//retirar  !!!!!!! 
    // result >>>>>>>> [nomes], [NeK] e 

    new criarArqSaida(nomes,NeK);        
}  

}