📜  Java Java类

📅  最后修改于: 2022-05-13 01:54:58.288000             🧑  作者: Mango

Java Java类

JarInputStream 类用于从任何输入流中读取 JAR 文件的内容。它扩展了Java.util.zip.ZipInputStream 类,支持读取可选的 Manifest 条目。 Manifest 可用于存储有关 JAR 文件及其条目的元信息。
构造函数

  • JarInputStream(InputStream in) :创建一个新的 JarInputStream 并读取可选清单。
  • JarInputStream(InputStream in, boolean verify) :创建一个新的 JarInputStream 并读取可选清单。

方法:

  • protected ZipEntry createZipEntry(String name) :为指定的JAR文件入口名创建一个新的JarEntry(ZipEntry)。指定JAR文件入口名的清单属性将被复制到新的JarEntry。
  • Manifest getManifest() :返回此 JAR 文件的 Manifest,如果没有则返回 null。
    Syntax :public Manifest getManifest()
    Returns:
    the Manifest for this JAR file, or null if none.
  • ZipEntry getNextEntry() :读取下一个 ZIP 文件条目并将流定位在条目数据的开头。如果启用了验证,则在为下一个条目定位流时检测到的任何无效签名都将导致异常。
    Syntax :public ZipEntry getNextEntry()
                          throws IOException
    Overrides:
    getNextEntry in class ZipInputStream
    Returns:
    the next ZIP file entry, or null if there are no more entries
    Throws:
    ZipException 
    IOException 
    SecurityException
  • JarEntry getNextJarEntry() :读取下一个 JAR 文件条目并将流定位在条目数据的开头。如果启用了验证,则在为下一个条目定位流时检测到的任何无效签名都将导致异常。
    Syntax :public JarEntry getNextJarEntry()
                             throws IOException
    Returns:
    the next JAR file entry, or null if there are no more entries
    Throws:
    ZipException 
    IOException 
    SecurityException
  • int read(byte[] b, int off, int len) :从当前 JAR 文件条目中读取到字节数组中。如果 len 不为零,则该方法将阻塞,直到某些输入可用;否则,不读取任何字节并返回 0。如果已启用验证,则当前条目上的任何无效签名将在到达条目末尾之前的某个时间点报告。
    Syntax :public int read(byte[] b,
           int off,
           int len)
             throws IOException
    Overrides:
    read in class ZipInputStream
    Parameters:
    b - the buffer into which the data is read
    off - the start offset in the destination array b
    len - the maximum number of bytes to read
    Returns:
    the actual number of bytes read, or -1 if the end of the entry is reached
    Throws:
    NullPointerException 
    IndexOutOfBoundsException 
    ZipException 
    IOException 
    SecurityException 
//Java program demonstrating JarInputStream methods
  
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.jar.JarInputStream;
import java.util.zip.ZipEntry;
  
class JarInputStreamDemo extends JarInputStream
{
  
    public JarInputStreamDemo(InputStream in) throws IOException 
    {
        super(in);
    }
    public static void main(String[] args) throws IOException
    {
        FileInputStream is = new FileInputStream("codechecker.jar");
        JarInputStream jis = new JarInputStream(is);
        JarInputStreamDemo obj=new JarInputStreamDemo(jis);
  
        //illustrating createZipEntry() method
        ZipEntry ze1=obj.createZipEntry("ZipEntry");
        System.out.println(ze1.getName());
  
        //illustrating getNextEntry() method
        ZipEntry ze=jis.getNextEntry();
        System.out.println(ze.getName());
  
        //illustrating getManifest();
        System.out.println(jis.getManifest());
  
        // Reading from the current JAR file entry
        // into an array of 10 bytes
        byte b[] = new byte[10];
  
        //illustrating getNextJarEntry()
        //illustrating read(byte b[],int off,int length)
        while(jis.getNextJarEntry()!= null)
            jis.read(b);
        System.out.print(Arrays.toString(b));
  
        //closing the stream
        jis.close();
    }
}

输出 :

Zipentry
Attention-64.png
java.util.jar.Manifest@513ee0c5
[-119, 80, 78, 71, 13, 10, 26, 10, 0, 0]