Java Resource Get getResourceAsStream(final Class caller, final String resource)

Here you can find the source of getResourceAsStream(final Class caller, final String resource)

Description

Get the specified resource as an input stream.

License

LGPL

Parameter

Parameter Description
caller The caller's class.
resource The resource name.

Return

The input stream or null if not found.

Declaration

public static InputStream getResourceAsStream(final Class caller, final String resource) 

Method Source Code


//package com.java2s;
/*/*from  ww w. j av a  2 s  . c om*/
 * JBoss, Home of Professional Open Source
 * Copyright 2006, Red Hat Middleware LLC, and individual contributors
 * as indicated by the @author tags. 
 * See the copyright.txt in the distribution for a full listing 
 * of individual contributors.
 * This copyrighted material is made available to anyone wishing to use,
 * modify, copy, or redistribute it subject to the terms and conditions
 * of the GNU Lesser General Public License, v. 2.1.
 * This program is distributed in the hope that it will be useful, but WITHOUT A
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
 * You should have received a copy of the GNU Lesser General Public License,
 * v.2.1 along with this distribution; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA  02110-1301, USA.
 * 
 * (C) 2005-2006,
 * @author JBoss Inc.
 */

import java.io.IOException;
import java.io.InputStream;

import java.net.URL;

public class Main {
    /**
     * Get the specified resource as an input stream.
     * @param caller The caller's class.
     * @param resource The resource name.
     * @return The input stream or null if not found.
     */
    public static InputStream getResourceAsStream(final Class caller, final String resource) {
        if ((resource == null) || (resource.length() == 0)) {
            return null;
        }

        final String absoluteResource;
        if (resource.charAt(0) == '/') {
            absoluteResource = resource;
        } else {
            final String callerName = caller.getName();
            final int lastSeparator = callerName.lastIndexOf('.');
            if (lastSeparator == -1) {
                absoluteResource = '/' + resource;
            } else {
                absoluteResource = '/' + callerName.substring(0, lastSeparator + 1).replace('.', '/') + resource;
            }
        }
        final URL url = getResourceAsURL(caller, absoluteResource);
        if (url != null) {
            try {
                return url.openStream();
            } catch (final IOException ioe) {
            }
        }
        return null;
    }

    /**
     * Get the specified resource as a URL.
     * @param caller The caller's class.
     * @param resource The resource name.
     * @return The URL or null if not found.
     */
    public static URL getResourceAsURL(final Class caller, final String resource) {
        final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
        if (contextClassLoader != null) {
            final URL contextURL = contextClassLoader.getResource(resource);
            if (contextURL != null) {
                return contextURL;
            }
        }
        final URL callerURL = caller.getResource(resource);
        if (callerURL != null) {
            return callerURL;
        }
        return ClassLoader.getSystemResource(resource);
    }
}

Related

  1. getResourceAsFile(Class clazz, String rscName)
  2. getResourceAsFile(final Class clazz, final String name)
  3. getResourceAsFile(final String filename, final Class theClass)
  4. getResourceAsFile(String name)
  5. getResourceAsStream(Class aClass, String name)
  6. getResourceAsStream(String resourceLocation)
  7. getResourceAsString(String prefix, String resource)
  8. getResourceAsString(String resource)
  9. getResourceBase()