All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jruby.util.JarFileResource Maven / Gradle / Ivy

There is a newer version: 9.4.9.0
Show newest version
package org.jruby.util;

import jnr.posix.POSIX;
import org.jruby.Ruby;
import org.jruby.util.io.ChannelDescriptor;
import org.jruby.util.io.ModeFlags;

import java.io.IOException;
import java.io.InputStream;
import java.nio.channels.Channels;
import java.util.jar.JarEntry;

/**
 * Represents a file in a jar.
 *
 * 

* Note: while directories can be contained within a jar, they're still represented by * JarDirectoryResource, since Ruby expects a directory to exist as long as any files in that * directory do, or Dir.glob would break. *

*/ class JarFileResource extends JarResource { private final JarCache.JarIndex index; private final JarEntry entry; JarFileResource(String jarPath, boolean rootSlashPrefix, JarCache.JarIndex index, JarEntry entry) { super(jarPath, rootSlashPrefix); this.index = index; this.entry = entry; } @Override public String entryName() { return entry.getName(); } @Override public boolean isDirectory() { return false; } @Override public boolean isFile() { return true; } @Override public long length() { return entry.getSize(); } @Override public long lastModified() { return entry.getTime(); } @Override public String[] list() { // Files cannot be listed return null; } @Override InputStream openInputStream() { return index.getInputStream(entry); } @Override public ChannelDescriptor openDescriptor(ModeFlags flags, int perm) throws ResourceException { return new ChannelDescriptor(Channels.newChannel(inputStream()), flags); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy