Boa noite a todos… Tenho um arquivo de texto com ceps e endereços que salvei dentro do projeto em um pacote so para aquivos que criei. Como faço para acessar esse .txt no .jar da aplicação, tentei algumas coisa mais não consegui… E também é possivel gravar alguma informação nesse arquivo mesmo estando dentro do jar ?
Abre o .JAR no WinRar
Não.
Se foi você mesmo quem fez, você vai ter os fontes, é só ajeitar e compilar de novo.
Se não foi você quem fez, não mexa no JAR dos outros. É crime previsto em lei alteração de propriedade intelectual sem permissão.
Normalmente a estrutura de projetos Java é parecida com esta:
├── build.gradle
└── src
└── main
├── java
│ └── app
│ └── App.java
└── resources
└── lista-de-ceps.txt
Se este for o seu caso, vc consegue ler facilmente o conteúdo da pasta resources
da seguinte forma:
package app;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class App {
public static void main(String... args) { // @formatter:off
try (
var is = App.class.getClassLoader().getResourceAsStream("lista-de-ceps.txt");
var isr = new InputStreamReader(is);
var br = new BufferedReader(isr)
) {
br.lines().forEach(line -> {
System.out.println("CEP: " + line);
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
É uma aplicação que estou fazendo.
Estou um usando o netbeans ele não encontrou a classe App… O que pode ser?
App
foi o nome que eu dei para minha classe principal, vc tem que substituir pelo nome da sua própria classe.
Eu fiz daquele jeito…
App.class.getClassLoader().getResourceAsStream("lista-de-ceps.txt");
… Porque eu estou invocando a partir de um método estático.
Se vc estiver ler a partir de um método não-estático, vc faria algo assim:
package app;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
class LeitorDeCep {
void lerCep() {
try (var is = this.getClass().getClassLoader().getResourceAsStream("lista-de-ceps.txt");
var isr = new InputStreamReader(is);
var br = new BufferedReader(isr)) {
br.lines().forEach(line -> {
System.out.println("CEP: " + line);
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class App {
public static void main(String... args) { // @formatter:off
LeitorDeCep leitor = new LeitorDeCep();
leitor.lerCep();
}
}
Entendi.