Java Resource File getFileFromRelativeResource(final Class type, final String relativeResourceName)

Here you can find the source of getFileFromRelativeResource(final Class type, final String relativeResourceName)

Description

Returns the specified file from a resource relative to the given type.

License

Apache License

Parameter

Parameter Description
type the type to refer to the class loader to load the resource from. The resource is relative to this type.
relativeResourceName name of the resource (file or directory) in the class path, relative to the passed in <code>type</code>.

Return

the file representation of the resource or null if the resource does not exist, is not accessible via the file:/ protocol or due to missing privileges.

Declaration

public static File getFileFromRelativeResource(final Class<?> type, final String relativeResourceName) 

Method Source Code

//package com.java2s;
/*//from  w  w w .j  av a 2  s .co  m
 * Copyright 2010-2016 smartics, Kronseder & Reiner GmbH
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.io.File;

import java.net.URL;

public class Main {
    /**
     * Returns the specified file from a resource relative to the given type.
     *
     * @param type the type to refer to the class loader to load the resource
     *          from. The resource is relative to this type.
     * @param relativeResourceName name of the resource (file or directory) in the
     *          class path, relative to the passed in <code>type</code>.
     * @return the file representation of the resource or <code>null</code> if the
     *         resource does not exist, is not accessible via the
     *         <code>file:/</code> protocol or due to missing privileges.
     */
    public static File getFileFromRelativeResource(final Class<?> type, final String relativeResourceName) {
        final URL url = type.getResource(relativeResourceName);
        final File file = getFileFrom(url);
        return file;
    }

    private static File getFileFrom(final URL url) {
        if (url != null) {
            final String resourceAsString = url.toExternalForm();

            if (resourceAsString.startsWith("file:/")) {
                final int startIndex = isWindows() ? 6 : 5;
                final String fileName = resourceAsString.substring(startIndex);
                final File file = new File(fileName);
                return file;
            }
        }
        return null;
    }

    private static boolean isWindows() {
        return File.separatorChar == '\\';
    }
}

Related

  1. getFile(Class resourceClass, String fileName)
  2. getFile(Class cls, String resource)
  3. getFile(String resource)
  4. getFile(String resourceOrFile, Class cls, boolean deleteTmpOnExit)
  5. getFileByResources(String fileName, Class clazz)
  6. getFileFromSystemResources(String fileName)
  7. getFilename(Class clazz, String resource)
  8. getFileName(final Object resource)
  9. getFileResource(String resourceName)