El ejemplo de este artículo indica el método para leer datos del archivo JAR de Java. Compártelo para todos para su referencia. Los detalles son los siguientes:
Los archivos Java Archives (JAR) se basan en soluciones de embalaje de tecnología Java. Permiten a los desarrolladores empacar todo el contenido relacionado (clases, imágenes, sonido, archivos de soporte, etc.) en un solo archivo. El formato de archivo JAR admite compresión, autenticación y versiones, y muchas otras características.
Es difícil obtener el contenido del archivo contenido en el archivo JAR, pero no es posible. Esta técnica le dirá cómo obtener un archivo del archivo JAR. Primero obtendremos el directorio de archivos en este archivo JAR y luego leeremos el archivo especificado.
Si está familiarizado con el formato zip común, encontrará que el archivo jar no es muy diferente de él. El archivo JAR proporciona un método para empacar múltiples archivos en un archivo, y cada archivo que está empaquetado puede comprimirse por separado. Los archivos JAR pueden agregar una cosa llamada Manifest, que permite a los desarrolladores agregar otra información relacionada con el contenido. Por ejemplo, Manifest puede indicar qué archivos en el archivo JAR para comenzar a ejecutar aplicaciones o especificar la versión de la biblioteca.
Java 2 SDK Standard Edition proporciona una herramienta JAR que puede leer y escribir archivos JAR a través de ella. Luego, tal vez desee leer y escribir archivos JAR en su programa. (Esta técnica solo implica el contenido de leer archivos JAR en el programa). Muy feliz, puede hacerlo, y no necesita considerar el problema de la descompresión, porque la biblioteca de clases lo ha ayudado a manejarlo. Las clases que necesita usar están en java.util.jar. La clase principal que se utilizará aquí es la clase Jarfile, que es un archivo .jar en sí. Cada archivo es citado por Jarentry.
Al principio, pase un parámetro para crear una instancia de JarFile para el constructor de JarFile.
Copiar código del código de la siguiente manera: jarfile jarfile = new Jarfile ("theFile.jar");
O copie el código de código de la siguiente manera: archivo file = nuevo archivo ("theFile.jar");
Jarfile jarfile = new Jarfile (archivo);
También tiene algunos otros constructores que admiten la verificación de identidad y marcan archivos para eliminar. Sin embargo, estos constructores no estarán involucrados aquí.
Después de obtener una referencia a un archivo JAR, puede leer el directorio de su contenido. El método de entradas de Jarfile devuelve el objeto de enumeración de todas las entradas.
// Nota del traductor: Enum es una palabra clave en Java 5.0, por lo que este caso debe compilar la falla en 5.0. enum = jarfile.entries ();
Como se mencionó anteriormente, cada individuo es un Jarentry. Esta clase tiene algunos métodos como GetName, Getize y GetCompressetsize.
Danos un ejemplo de cómo usar estas funciones en el programa. El siguiente programa muestra la lista de contenido del archivo JAR y los nombres, el tamaño y el tamaño de la compresión. (Esto es similar al comando jar con los parámetros "t" y "v").
Import java.io.*; System.out.println ("Proporcione un nombre de archivo JAR"); HaSmoreElements ()) {Process (enum.nextElement ());}} Proceso de vacío estático privado (objeto obj) {Jarentry Entry = (JarEntry) obj; );
Si usa JCE.jar en J2SE 1.4.1 para probar el programa Jardir anterior, debería ver la salida como la siguiente (se deben mostrar más archivos en lo siguiente ...): Más archivos: Más archivos): Más archivos: Más archivos):
Meta-Inf/Manifest.MF 5315 1910meta-Inf/4jcejars.sf 5368 1958Meta-Inf/4JCEJARS.DSA 2207 1503Meta-Inf/0 2Javax/0 0Javax/Crypto/0 0Javax/Crypto/Interfaces/0 0Javax/Crypto/Interfaces/Interfaces/ Dhkey.class 209 185Javax/crypto/interfaces/dhpublickey.class 265 215javax/crypto/interfaces/dhprivatekey.class 267 215javax/crypto/into/en erfaces/pbekey.class 268 224Javax/crypto/secretkey.class 167 155 ...
Tenga en cuenta que la parte superior del contenido de entrada contiene las líneas de meta-INF, que es la información de verificación de seguridad y de seguridad. El elemento con un tamaño de 0 no es un archivo, sino un directorio.
Para leer realmente el contenido del archivo del archivo JAR, debe obtener el InputStream de Propósito de entrada correspondiente. Esto es diferente de Jarentry. Jarentry solo incluye información de entrada, pero no incluye contenido real. Esto es muy similar a la diferencia entre File y FileInputStrateam. Cuando solo visita el archivo, nunca abrirá el archivo correspondiente. Aquí le mostramos cómo obtener InputStream de una entrada:
Copiar código del código de la siguiente manera: InputStream Input = jarfile.getInputStream (entrada);
Después de obtener el flujo de entrada, solo necesita leerlo como leer otras transmisiones. Si se trata de un flujo de texto, recuerde usar un lector para obtener caracteres de la transmisión. Para el flujo de bytes, como las imágenes, debe leerlo directamente.
El siguiente programa demuestra el contenido de un archivo JAR. Al ejecutar un programa, debe especificar el nombre del archivo para leer desde el archivo JAR.
Import java.io.*; Proporcione un nombre de archivo y archivo JAR para leer "); system.exit (-1);} jarfile jarfile = new Jarfile (args [0]); jarentry entry = jarfile.getjarentry]); inputstream input = jarfile .getInputream (entrada (entrada ); línea = lector.readline ())!
Suponga que tiene un archivo jar llamado myFiles.jar, uno de los cuales se llama archivo de texto spider.txt, y luego suponga que el pider.txt contiene el siguiente texto:
La araña Itsy Bitsy corrió por el pico de agua llegó la lluvia y lavó la araña
Ejecute el siguiente comando para mostrar el contenido del archivo de texto en el archivo jar:
Copiar código del código de la siguiente manera: Java Jrearead myfiles.jar spider.txt
Se espera que este artículo sea útil para el diseño del programa Java de todos.