Arquivo dentro de .jar

Uma biblioteca (.jar) pode conter arquivos, *.txt, por exemplo a serem lidos em aplicações que importem esses .jar?

Não estou conseguindo fazer com que a aplicação principal leia os arquivos dentro dos .jars, visto que a estrutura de diretórios é diferente.

Alguém tem alguma solução para isso??

Obrigado,
Adriano

se você usar a busca vai perceber que bastante gente já teve essa mesma dúvida. De qualquer forma:

this.getClass().getClassLoader().getResourceAsStream("arquivo.txt");

eu procurei bastante já nos fóruns aqui…
quanto a leitura desse arquivo eu já tinha visto…

tem como eu fazer a escrita dele???

Mas essa chamada está dentro de um .jar que é importado pela aplicação… e o comando:

String url = this.getClass().getClassLoader().getResource(imgName).getPath(); é chamado dentro de uma das classes do .jar… gerando um NullPointerException… :?

O caminho recuperado foi o seguinte:

C:\Documents and Settings\adriano\Meus documentos\NetBeansProjects\projeto\lib\imagens.jar!\br\com\imagens\buttons\img\exit.png
E os botões da aplicação ficam sem imagem… pq nem o próprio windows consegue abrir uma imagem a partir desse caminho…

como eu disse antes, existem tópicos que ja tratam disso… só fazer a busca.
os arquivos estão na raiz do jar?

Para você escrever dentro de um jar, você precisa fazer a cópia dele para um arquivo temporário e recriar o jar - como ele é simplesmente um arquivo zip, não permite acesso “in-place”. O formato .zip simplesmente não permite alteração de forma simples.

Adicionalmente, no caso do Windows, se o jar for um arquivo que contém suas classes, ele não pode ser apagado nem alterado enquanto você está com seu programa no ar, porque partes dele são mapeadas em memória (todo jar contém um diretório de arquivos no seu final) e o Windows não permite que você mexa no arquivo enquanto ele está sendo acessado pelo Java.

thingol, meu problema eh o seguinte, preciso manipular arquivos no celular (detalhe q eh motorola, mas eu queria desenvolver algo genérico…)
mas até agora eu nao consegui “ver” as pastas dentro do celular, nem os arquivos já existentes…

vi alguma coisa falando q celulares motorola nao permitem acesso aos seus diretórios se a MIDlet nao tiver um certificado digital…

vc sabe se tem algum outro jeito???

Obrigado