Erro ao ler arquivo informando apenas o nome

Bom gente, eu tenho o seguinte código:

try { BufferedReader in = new BufferedReader(new FileReader("senha.txt")); senhasalva = in.readLine(); in.close(); } catch (IOException ex) { Logger.getLogger(Senhaf.class.getName()).log(Level.SEVERE, null, ex); }

E precisaria que funcionasse apenas colocando o arquivo, sem informar o caminho todo. Por exemplo, quando eu edito o campo do FileReader para “(“E:\java\App3\src\senha.txt”)” ele funciona perfeitamente. Mas se vou compilar e usar em outro pc, não posso usar o caminho inteiro, a menos que eu crie o arquivo, mas eu queria poder usar o arquivo da mesma pasta.

Eu usei esse código pra pegar o bg do app, e funciona, tudo estando na mesma pasta:

try { Image imagem = ImageIO.read(getClass().getResourceAsStream("bg.png")); gr.drawImage((BufferedImage) imagem, null, 0, 0 ); }

Porque em um deles funciona e no outro não? Ambos arquivos estão na mesma pasta…

Quando você usa o FileReader, ele utiliza a pasta onde foi executado o comando “java” como diretório corrente. Já o getResourceAsStream utiliza o local da classe.

Para evitar isso, basta usar o getResourceAsStream para ler o txt também.

Eu sou novato, eu até tentei fazer isso mas não consegui. Como que eu faria usando getResource?