## org.springframework.core.io
Class ClassPathResource

    java.lang.Object
      org.springframework.core.io.AbstractResource
          org.springframework.core.io.AbstractFileResolvingResource
              org.springframework.core.io.ClassPathResource

All Implemented Interfaces:
  InputStreamSource, Resource

    public class ClassPathResource

extends AbstractFileResolvingResource

`Resource` implementation for class path resources. Uses either a given ClassLoader or a given Class for loading resources.

Supports resolution as `java.io.File` if the class path resource resides in the file system, but not for resources in a JAR. Always supports resolution as URL.

Since:
  28.12.2003
Author:
  Juergen Hoeller
See Also:
  `ClassLoader.getResourceAsStream(String)`, `Class.getResourceAsStream(String)`

Constructor Summary
`` `ClassPathResource(String path)` Create a new ClassPathResource for ClassLoader usage.
`` `ClassPathResource(String path, Class<?> clazz)` Create a new ClassPathResource for Class usage.
`` `ClassPathResource(String path, ClassLoader classLoader)` Create a new ClassPathResource for ClassLoader usage.
`protected` `ClassPathResource(String path, ClassLoader classLoader, Class<?> clazz)` Create a new ClassPathResource with optional ClassLoader and Class.

Method Summary
`Resource` `createRelative(String relativePath)` This implementation creates a ClassPathResource, applying the given path relative to the path of the underlying resource of this descriptor.
`boolean` `equals(Object obj)` This implementation compares the underlying class path locations.
`boolean` `exists()` This implementation checks for the resolution of a resource URL.
`ClassLoader` `getClassLoader()` Return the ClassLoader that this resource will be obtained from.
`String` `getDescription()` This implementation returns a description that includes the class path location.
`String` `getFilename()` This implementation returns the name of the file that this class path resource refers to.
`InputStream` `getInputStream()` This implementation opens an InputStream for the given class path resource.
`String` `getPath()` Return the path for this resource (as resource path within the class path).
`URL` `getURL()` This implementation returns a URL for the underlying class path resource.
`int` `hashCode()` This implementation returns the hash code of the underlying class path location.

Methods inherited from class org.springframework.core.io.AbstractFileResolvingResource
`contentLength, getFile, getFile, getFileForLastModifiedCheck, isReadable, lastModified`

Methods inherited from class org.springframework.core.io.AbstractResource
`getURI, isOpen, toString`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Constructor Detail

### ClassPathResource

    public ClassPathResource(String path)

  Create a new ClassPathResource for ClassLoader usage. A leading slash will be removed, as the ClassLoader resource access methods will not accept it.

  The thread context class loader will be used for loading the resource.

  Parameters:
    `path` - the absolute path within the class path
  See Also:
    `ClassLoader.getResourceAsStream(String)`, `ClassUtils.getDefaultClassLoader()`

### ClassPathResource

    public ClassPathResource(String path,
                             ClassLoader classLoader)

  Create a new ClassPathResource for ClassLoader usage. A leading slash will be removed, as the ClassLoader resource access methods will not accept it.

  Parameters:
    `path` - the absolute path within the classpath
    `classLoader` - the class loader to load the resource with, or `null` for the thread context class loader
  See Also:
    `ClassLoader.getResourceAsStream(String)`

### ClassPathResource

    public ClassPathResource(String path,
                             Class<?> clazz)

  Create a new ClassPathResource for Class usage. The path can be relative to the given class, or absolute within the classpath via a leading slash.

  Parameters:
    `path` - relative or absolute path within the class path
    `clazz` - the class to load resources with
  See Also:
    `Class.getResourceAsStream(java.lang.String)`

### ClassPathResource

    protected ClassPathResource(String path,
                                ClassLoader classLoader,
                                Class<?> clazz)

  Create a new ClassPathResource with optional ClassLoader and Class. Only for internal usage.

  Parameters:
    `path` - relative or absolute path within the classpath
    `classLoader` - the class loader to load the resource with, if any
    `clazz` - the class to load resources with, if any

Method Detail

### getPath

    public final String getPath()

  Return the path for this resource (as resource path within the class path).

### getClassLoader

    public final ClassLoader getClassLoader()

  Return the ClassLoader that this resource will be obtained from.

### exists

    public boolean exists()

  This implementation checks for the resolution of a resource URL.

  Specified by:
    `exists` in interface `Resource`
  Overrides:
    `exists` in class `AbstractFileResolvingResource`
  See Also:
    `ClassLoader.getResource(String)`, `Class.getResource(String)`

### getInputStream

    public InputStream getInputStream()
                               throws IOException

  This implementation opens an InputStream for the given class path resource.

  Throws:
    `IOException` - if the stream could not be opened
  See Also:
    `ClassLoader.getResourceAsStream(String)`, `Class.getResourceAsStream(String)`

### getURL

    public URL getURL()
               throws IOException

  This implementation returns a URL for the underlying class path resource.

  Specified by:
    `getURL` in interface `Resource`
  Overrides:
    `getURL` in class `AbstractResource`
  Throws:
    `IOException` - if the resource cannot be resolved as URL, i.e. if the resource is not available as descriptor
  See Also:
    `ClassLoader.getResource(String)`, `Class.getResource(String)`

### createRelative

    public Resource createRelative(String relativePath)

  This implementation creates a ClassPathResource, applying the given path relative to the path of the underlying resource of this descriptor.

  Specified by:
    `createRelative` in interface `Resource`
  Overrides:
    `createRelative` in class `AbstractResource`
  Parameters:
    `relativePath` - the relative path (relative to this resource)
  Returns:
    the resource handle for the relative resource
  See Also:
    `StringUtils.applyRelativePath(String, String)`

### getFilename

    public String getFilename()

  This implementation returns the name of the file that this class path resource refers to.

  Specified by:
    `getFilename` in interface `Resource`
  Overrides:
    `getFilename` in class `AbstractResource`
  See Also:
    `StringUtils.getFilename(String)`

### getDescription

    public String getDescription()

  This implementation returns a description that includes the class path location.

  See Also:
    `Object.toString()`

### equals

    public boolean equals(Object obj)

  This implementation compares the underlying class path locations.

  Overrides:
    `equals` in class `AbstractResource`
  See Also:
    `Resource.getDescription()`

### hashCode

    public int hashCode()

  This implementation returns the hash code of the underlying class path location.

  Overrides:
    `hashCode` in class `AbstractResource`
  See Also:
    `Resource.getDescription()`