# Class FileDataSource

java.lang.Object
uk.ac.starlink.util.DataSource
uk.ac.starlink.util.FileDataSource

Direct Known Subclasses:
  `TemporaryFileDataSource`

public class FileDataSource extends DataSource
A DataSource implementation based on a `File`.

Author:
  Mark Taylor (Starlink)

## Field Summary

### Fields inherited from class DataSource

`DEFAULT_INTRO_LIMIT, MARK_WORKAROUND_PROPERTY`

## Constructor Summary

Constructors
Constructor
Description
`FileDataSource(File file)`
Creates a new FileDataSource from a File object.
`FileDataSource(File file, String position)`
Creates a new FileDataSource from a File object and a position string.
`FileDataSource(String filename)`
Creates a new FileDataSource from a filename.

## Method Summary

Modifier and Type
Method
Description
`File`
`getFile()`
Returns the File object on which this `FileDataSource` is based.
`protected InputStream`
`getRawInputStream()`
Provides a new InputStream for this data source.
`long`
`getRawLength()`
Returns the length of this file.
`URL`
`getURL()`
Returns a URL which corresponds to this data source, if one exists.

### Methods inherited from class DataSource

`close, forceCompression, getCompression, getHybridInputStream, getInputStream, getInputStream, getIntro, getIntroLimit, getLength, getMarkWorkaround, getName, getPosition, getSystemId, makeDataSource, makeDataSource, makeDataSource, setCompression, setIntroLimit, setMarkWorkaround, setName, setPosition, toString`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### FileDataSource

public FileDataSource(File file, String position) throws IOException
Creates a new FileDataSource from a File object and a position string.

Parameters:
  `file` - the file
  `position` - the source's position attribute (indicates the relevant part of the file)
Throws:
  `IOException` - if `file` does not exist, cannot be read, or is a directory

### FileDataSource

public FileDataSource(File file) throws IOException
Creates a new FileDataSource from a File object.

Parameters:
  `file` - the file
Throws:
  `IOException` - if `file` does not exist, cannot be read, or is a directory

### FileDataSource

public FileDataSource(String filename) throws IOException
Creates a new FileDataSource from a filename.

Parameters:
  `filename` - filename
Throws:
  `IOException` - if `filename` does not name a readable file

## Method Details

### getRawInputStream

protected InputStream getRawInputStream() throws IOException
Description copied from class: `DataSource`
Provides a new InputStream for this data source. This method should be implemented by subclasses to provide a new InputStream giving the raw content of the source each time it is called. The general contract of this method is that each time it is called it will return a stream with the same content.

Specified by:
  `getRawInputStream` in class `DataSource`
Returns:
  an InputStream containing the data of this source
Throws:
  `IOException`

### getRawLength

public long getRawLength()
Returns the length of this file. return file length

Overrides:
  `getRawLength` in class `DataSource`
Returns:
  the length of the raw input stream, or -1

### getFile

public File getFile()
Returns the File object on which this `FileDataSource` is based.

Returns:
  the file

### getURL

public URL getURL()
Description copied from class: `DataSource`
Returns a URL which corresponds to this data source, if one exists. An `URL.openConnection()` method call on the URL returned by this method should provide a stream with the same content as the `DataSource.getRawInputStream()` method of this data source. If no such URL exists or is known, then `null` should be returned.

If this source has a non-null position value, it will be appended to the main part of the URL after a '#' character (as the URL's ref part).

Overrides:
  `getURL` in class `DataSource`
Returns:
  a URL corresponding to this source, or `null`