>Java >java지도 시간 >Java를 사용하여 JAR 파일 내의 파일을 어떻게 나열할 수 있습니까?

Java를 사용하여 JAR 파일 내의 파일을 어떻게 나열할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-20 01:39:10237검색

How Can I List Files Inside a JAR File Using Java?

Java를 사용하여 JAR 내의 파일 나열

JAR 아카이브 작업 시 일반적인 작업 중 하나는 포함된 파일을 나열하는 것입니다. 이는 특정 파일을 추출하거나 아카이브 내용의 인벤토리를 생성하는 등 다양한 목적에 유용할 수 있습니다.

Java API 사용

Java는 ZIP 파일 처리를 위한 광범위한 클래스 세트를 제공합니다. JAR 아카이브를 포함합니다. ZipInputStream 클래스를 사용하면 JAR 파일의 항목을 반복하고 해당 메타데이터에 액세스할 수 있습니다.

JAR 내의 파일을 나열하려면 다음 단계를 따르세요.

  1. CodeSource 개체 가져오기 JAR 내에서 실행되는 클래스의 경우. 이는 Class 객체의 getProtectionDomain() 및 getCodeSource() 메소드를 사용하여 수행할 수 있습니다.
  2. getLocation() 메소드를 사용하여 CodeSource를 URL 객체로 변환합니다.
  3. 다음에서 ZipInputStream 객체를 생성합니다.
  4. 의 getNextEntry() 메소드를 호출하여 JAR의 항목을 반복합니다. ZipInputStream.
  5. 각 항목에 대해 이름이 원하는 패턴이나 기준과 일치하는지 확인합니다.

예제 코드

다음 코드는 모든 항목을 나열하는 예를 보여줍니다. JAR 내의 파일:

CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();
if (src != null) {
  URL jar = src.getLocation();
  ZipInputStream zip = new ZipInputStream(jar.openStream());
  while (true) {
    ZipEntry e = zip.getNextEntry();
    if (e == null) {
      break;
    }
    System.out.println(e.getName());
  }
} else {
  System.out.println("JAR not found");
}

Java 7 향상된 기능

Java 7에는 ZIP 파일 작업 프로세스를 단순화하는 새로운 기능이 도입되었습니다. FileSystem 클래스를 사용하여 ZIP 파일을 읽기 전용 파일 시스템으로 마운트할 수 있습니다. 이를 통해 표준 Java I/O 라이브러리를 사용하여 JAR 파일의 내용을 탐색하고 나열할 수 있습니다.

다음 코드는 FileSystem 클래스를 사용하여 JAR 내의 파일을 나열하는 예를 보여줍니다.

Path jarPath = Paths.get("/path/to/my.jar");
FileSystem fs = FileSystems.newFileSystem(jarPath, null);
Path root = fs.getPath("/");
Files.walk(root)
    .filter(path -> path.toString().startsWith("path/to/your/dir/"))
    .forEach(System.out::println);

이 코드는 파일 및 디렉터리 작업을 위한 고급 API를 제공하는 Files 클래스를 사용하여 JAR 파일의 루트 디렉터리를 탐색하고 일치하지 않는 모든 파일을 필터링합니다. 원하는 기준.

위 내용은 Java를 사용하여 JAR 파일 내의 파일을 어떻게 나열할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.