O exemplo deste artigo informa o método de leitura de dados do arquivo JAR de Java. Compartilhe para todos para sua referência. Os detalhes são os seguintes:
Os arquivos Java Archives (JAR) são baseados nas soluções de embalagem de tecnologia Java. Eles permitem que os desenvolvedores empacotem todo o conteúdo relacionado (.classe, imagens, som, arquivos de suporte etc.) em um único arquivo. O formato de arquivo JAR suporta compactação, autenticação e versões e muitos outros recursos.
É uma coisa complicada obter o conteúdo do arquivo contido no arquivo JAR, mas não é possível. Esta técnica informará como obter um arquivo do arquivo JAR. Vamos obter o diretório de arquivos neste arquivo JAR primeiro e depois ler o arquivo especificado.
Se você estiver familiarizado com o formato ZIP comum, descobrirá que o arquivo JAR não é muito diferente dele. O arquivo JAR fornece um método para embalar vários arquivos em um arquivo, e cada arquivo embalado pode ser compactado separadamente. Os arquivos JAR podem adicionar uma coisa chamada Manifest, que permite aos desenvolvedores adicionar outras informações relacionadas ao conteúdo. Por exemplo, o manifesto pode indicar quais arquivos no arquivo JAR para começar a executar aplicativos ou especificar a versão da biblioteca.
O Java 2 SDK Standard Edition fornece uma ferramenta JAR que você pode ler e escrever arquivos JAR através dela. Então, talvez você queira ler e escrever arquivos JAR em seu programa. (Essa técnica envolve apenas o conteúdo da leitura de arquivos JAR no programa.) Muito feliz, você pode fazê -lo e não precisa considerar o problema da descompressão, porque a biblioteca de classes ajudou você a lidar com isso. As classes que você precisa usar estão em java.util.jar. A classe principal a ser usada aqui é a classe Jarfile, que é um próprio arquivo .jar. Cada arquivo é citado por Jarentry.
No início, passe um parâmetro para criar uma instância Jarfile para o construtor do Jarfile.
Copie o código do seguinte: Jarfile Jarfile = new Jarfile ("thefile.jar");
Ou copie o código da seguinte forma: arquivo de arquivo = novo arquivo ("thefile.jar");
Jarfile jarfile = new jarfile (arquivo);
Ele também possui outros construtores que suportam verificação de identidade e marcam arquivos para excluir. No entanto, esses construtores não estarão envolvidos aqui.
Depois de obter uma referência a um arquivo JAR, você pode ler o diretório de seu conteúdo. O método de entradas de Jarfile retorna o objeto de enumeração de todas as entradas.
// Nota do tradutor: Enum é uma palavra -chave no Java 5.0, então este caso deve compilar a falha em 5.0. enum = jarfile.entries ();
Como mencionado anteriormente, cada indivíduo é uma jarentry. Esta classe possui alguns métodos, como GetName, Getsize e GetCompressSize.
Vamos nos dar um exemplo de como usar esses recursos no programa. O programa a seguir mostra a lista de conteúdo do arquivo JAR e os nomes, tamanho e tamanho da compactação. (Isso é semelhante ao comando jar com os parâmetros "T" e "V".)
Importar java.io.*; System.out.println ("Forneça um nome de arquivo JAR"); hasMoreElements ()) {Process (enum.nextElement ());}} Processo estático privado (objeto obj) {jarentry Entrada = (Jarentry) obj; );
Se você usar o JCE.Jar no J2SE 1.4.1 para testar o programa Jardir acima, verá a saída como o seguinte (mais arquivos devem ser exibidos no seguinte ...): Mais arquivos: Mais arquivos): Mais arquivos: mais arquivos):
Meta-inf/manifest.mf 5315 1910meta-inf/4jcejars.sf 5368 1958meta-inf/4jcejars.dsa 2207 1503meta-inf/0 2javax/0 0javax/cripto/0 0Javax/Crypto/interfaces/0 0JAVAX/0 Dhkey.class 209 185Javax/criptografia/interfaces/dhpublickey.class 265 215Javax/cripto/interfaces/dhprivateKey.class 267 215Javax/Crypto/Into/intofaces/pbekey.class 268 224Javax/Crypto/SecretTo/SecretKey.Cl.
Observe que a parte superior do conteúdo de entrada contém as linhas de meta-INF, que são as informações de verificação de segurança e de segurança. O item com tamanho de 0 não é um arquivo, mas um diretório.
Para ler verdadeiramente o conteúdo do arquivo do arquivo JAR, você deve obter a entrada de entrada correspondente InputStream. Isso é diferente de Jarentry. O Jarentry inclui apenas informações de entrada, mas não inclui conteúdo real. Isso é muito semelhante à diferença entre o arquivo e o FileInputStrateam. Ao visitar apenas o arquivo, você nunca abrirá o arquivo correspondente. Veja como obter o InputStream de uma entrada:
Copie o código do seguinte: InputStream input = jarfile.getInputStream (entrada);
Depois de obter o fluxo de entrada, você só precisa lê -lo como ler outros fluxos. Se for um fluxo de texto, lembre -se de usar um leitor para obter caracteres do fluxo. Para fluxo de bytes, como imagens, você deve lê -lo diretamente.
O programa a seguir demonstra o conteúdo de um arquivo JAR. Ao executar um programa, você precisa especificar o nome do arquivo para ler no arquivo JAR.
Importar java.io.*; Por favor, forneça um nome de arquivo e arquivo jar para ler "); System.Exit (-1);} jarfile jarfile = new jarfile (args [0]); jarentry entrada = jarfile.getjarentry]); inputstream input = jarfile .getInputStream (entrada ); linha = leitor.readline ())!
Suponha que você tenha um arquivo jar chamado myfiles.jar, um dos quais é chamado Arquivo de texto Spider.txt e, em seguida, assuma que o Pider.txt contém o seguinte texto:
A aranha bitsy de Itre
Execute o seguinte comando para exibir o conteúdo do arquivo de texto no arquivo JAR:
Copie o código do seguinte: Java Jarread myfiles.jar spider.txt
Espera -se que este artigo seja útil para o design do programa Java de todos.