Package ucar.nc2
Class NetcdfFiles
- java.lang.Object
-
- ucar.nc2.NetcdfFiles
-
public class NetcdfFiles extends Object
Static helper methods for NetcdfFile objects. These use builders and new versions of Iosp's when available.- Since:
- 10/3/2019.
-
-
Field Summary
Fields Modifier and Type Field Description static String
reservedFullName
-
Constructor Summary
Constructors Constructor Description NetcdfFiles()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static NetcdfFile
build(IOServiceProvider spi, RandomAccessFile raf, String location, CancelTask cancelTask)
static String
canonicalizeUriString(String location)
Removes the"file:"
or"file://"
prefix from the location, if necessary.static boolean
canOpen(String location)
Find out if the location can be opened, but dont actually open it.static RandomAccessFile
getRaf(String location, int buffer_size)
Get the appropriate RandomAccessFile for accessing an object at the provided locationstatic String
makeFullName(Group g)
Create a Groups's full name with appropriate backslash escaping.static String
makeFullName(Variable v)
Create a Variable's full name with appropriate backslash escaping.static String
makeFullNameSectionSpec(Variable v)
Create a Variable's full name with appropriate backslash escaping for use in a section spec.protected static String
makeFullNameWithString(Group parent, String name)
Create a synthetic full name from a group plus a stringstatic String
makeValidCDLName(String vname)
Escape special characters in a netcdf short name when it is intended for use in CDL.static String
makeValidCdmObjectName(String shortName)
Create a valid CDM object name.static NetcdfFile
open(String location)
Open an existing netcdf file (read only).static NetcdfFile
open(String location, int buffer_size, CancelTask cancelTask)
Open an existing file (read only), with option of cancelling, setting the RandomAccessFile buffer size for efficiency.static NetcdfFile
open(String location, int buffer_size, CancelTask cancelTask, Object iospMessage)
Open an existing file (read only), with option of cancelling, setting the RandomAccessFile buffer size for efficiency, with an optional special object for the iosp.static NetcdfFile
open(String location, String iospClassName, int bufferSize, CancelTask cancelTask, Object iospMessage)
Open an existing file (read only), specifying which IOSP is to be used.static NetcdfFile
open(String location, CancelTask cancelTask)
Open an existing file (read only), with option of cancelling.static NetcdfFile
open(RandomAccessFile raf, String location, CancelTask cancelTask, Object iospMessage)
Open a RandomAccessFile as a NetcdfFile, if possible.static NetcdfFile
openInMemory(String filename)
Read a local CDM file into memory.static NetcdfFile
openInMemory(String name, byte[] data)
Open an in-memory netcdf file.static NetcdfFile
openInMemory(String name, byte[] data, String iospClassName)
Open an in-memory netcdf file, with a specific iosp.static NetcdfFile
openInMemory(URI uri)
Read a remote CDM file into memory.static void
registerIOProvider(Class iospClass)
Register an IOServiceProvider.static void
registerIOProvider(String className)
Register an IOServiceProvider, using its class string name.static void
registerRandomAccessFileProvider(Class rafClass)
Register a RandomAccessFile Provider.static void
registerRandomAccessFileProvider(String className)
Register a RandomAccessFile Provider, using its class string name.
-
-
-
Field Detail
-
reservedFullName
public static final String reservedFullName
- See Also:
- Constant Field Values
-
-
Method Detail
-
registerIOProvider
public static void registerIOProvider(String className) throws IllegalAccessException, InstantiationException, ClassNotFoundException
Register an IOServiceProvider, using its class string name.- Parameters:
className
- Class that implements IOServiceProvider.- Throws:
IllegalAccessException
- if class is not accessible.InstantiationException
- if class doesnt have a no-arg constructor.ClassNotFoundException
- if class not found.
-
registerIOProvider
public static void registerIOProvider(Class iospClass) throws IllegalAccessException, InstantiationException
Register an IOServiceProvider. A new instance will be created when one of its files is opened.- Parameters:
iospClass
- Class that implements IOServiceProvider.- Throws:
IllegalAccessException
- if class is not accessible.InstantiationException
- if class doesnt have a no-arg constructor.ClassCastException
- if class doesnt implement IOServiceProvider interface.
-
registerRandomAccessFileProvider
public static void registerRandomAccessFileProvider(String className) throws IllegalAccessException, InstantiationException, ClassNotFoundException
Register a RandomAccessFile Provider, using its class string name.- Parameters:
className
- Class that implements RandomAccessFileProvider.- Throws:
IllegalAccessException
- if class is not accessible.InstantiationException
- if class doesnt have a no-arg constructor.ClassNotFoundException
- if class not found.
-
registerRandomAccessFileProvider
public static void registerRandomAccessFileProvider(Class rafClass) throws IllegalAccessException, InstantiationException
Register a RandomAccessFile Provider. A new instance will be created when one of its files is opened.- Parameters:
rafClass
- Class that implements RandomAccessFileProvider.- Throws:
IllegalAccessException
- if class is not accessible.InstantiationException
- if class doesnt have a no-arg constructor.ClassCastException
- if class doesnt implement IOServiceProvider interface.
-
open
public static NetcdfFile open(String location) throws IOException
Open an existing netcdf file (read only).- Parameters:
location
- location of file.- Returns:
- the NetcdfFile.
- Throws:
IOException
- if error
-
open
public static NetcdfFile open(String location, CancelTask cancelTask) throws IOException
Open an existing file (read only), with option of cancelling.- Parameters:
location
- location of the file.cancelTask
- allow task to be cancelled; may be null.- Returns:
- NetcdfFile object, or null if cant find IOServiceProver
- Throws:
IOException
- if error
-
open
public static NetcdfFile open(String location, int buffer_size, CancelTask cancelTask) throws IOException
Open an existing file (read only), with option of cancelling, setting the RandomAccessFile buffer size for efficiency.- Parameters:
location
- location of file.buffer_size
- RandomAccessFile buffer size, if <= 0, use default sizecancelTask
- allow task to be cancelled; may be null.- Returns:
- NetcdfFile object, or null if cant find IOServiceProver
- Throws:
IOException
- if error
-
open
public static NetcdfFile open(String location, int buffer_size, CancelTask cancelTask, Object iospMessage) throws IOException
Open an existing file (read only), with option of cancelling, setting the RandomAccessFile buffer size for efficiency, with an optional special object for the iosp.- Parameters:
location
- location of file. This may be a- local netcdf-3 filename (with a file: prefix or no prefix)
- remote netcdf-3 filename (with an http: prefix)
- local netcdf-4 filename (with a file: prefix or no prefix)
- local hdf-5 filename (with a file: prefix or no prefix)
- local iosp filename (with a file: prefix or no prefix)
buffer_size
- RandomAccessFile buffer size, if <= 0, use default sizecancelTask
- allow task to be cancelled; may be null.iospMessage
- special iosp tweaking (sent before open is called), may be null- Returns:
- NetcdfFile object, or null if can't find IOServiceProver
- Throws:
IOException
- if error
-
open
public static NetcdfFile open(String location, String iospClassName, int bufferSize, CancelTask cancelTask, Object iospMessage) throws ClassNotFoundException, IllegalAccessException, InstantiationException, IOException
Open an existing file (read only), specifying which IOSP is to be used.- Parameters:
location
- location of fileiospClassName
- fully qualified class name of the IOSP class to handle this filebufferSize
- RandomAccessFile buffer size, if <= 0, use default sizecancelTask
- allow task to be cancelled; may be null.iospMessage
- special iosp tweaking (sent before open is called), may be null- Returns:
- NetcdfFile object, or null if cant find IOServiceProver
- Throws:
IOException
- if read errorClassNotFoundException
- cannot find iospClassName in the class pathInstantiationException
- if class cannot be instantiatedIllegalAccessException
- if class is not accessible
-
canOpen
public static boolean canOpen(String location) throws IOException
Find out if the location can be opened, but dont actually open it. In order for a location to be openable by netCDF-java, we must have 1) a properRandomAccessFile
implementation, and 2) a properIOServiceProvider
implementation.- Parameters:
location
- location of file- Returns:
- true if can be opened
- Throws:
IOException
- on read error
-
canonicalizeUriString
public static String canonicalizeUriString(String location)
Removes the"file:"
or"file://"
prefix from the location, if necessary. Also replaces back slashes with forward slashes.- Parameters:
location
- a URI string.- Returns:
- a canonical URI string.
-
getRaf
public static RandomAccessFile getRaf(String location, int buffer_size) throws IOException
Get the appropriate RandomAccessFile for accessing an object at the provided location- Parameters:
location
- a URI string.buffer_size
- size of the RandomAccessFileBuffer- Returns:
- RandomAccessFile for the object at location
- Throws:
IOException
-
openInMemory
public static NetcdfFile openInMemory(String filename) throws IOException
Read a local CDM file into memory. All reads are then done from memory.- Parameters:
filename
- location of CDM file, must be a local file.- Returns:
- a NetcdfFile, which is completely in memory
- Throws:
IOException
- if error reading file
-
openInMemory
public static NetcdfFile openInMemory(URI uri) throws IOException
Read a remote CDM file into memory. All reads are then done from memory.- Parameters:
uri
- location of CDM file, must be accessible through url.toURL().openStream().- Returns:
- a NetcdfFile, which is completely in memory
- Throws:
IOException
- if error reading file
-
openInMemory
public static NetcdfFile openInMemory(String name, byte[] data) throws IOException
Open an in-memory netcdf file.- Parameters:
name
- name of the dataset. Typically use the filename or URI.data
- in-memory netcdf file- Returns:
- memory-resident NetcdfFile
- Throws:
IOException
- if error
-
openInMemory
public static NetcdfFile openInMemory(String name, byte[] data, String iospClassName) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException
Open an in-memory netcdf file, with a specific iosp.- Parameters:
name
- name of the dataset. Typically use the filename or URI.data
- in-memory netcdf fileiospClassName
- fully qualified class name of the IOSP class to handle this file- Returns:
- NetcdfFile object, or null if cant find IOServiceProver
- Throws:
IOException
- if read errorClassNotFoundException
- cannat find iospClassName in the class pathInstantiationException
- if class cannot be instantiatedIllegalAccessException
- if class is not accessible
-
open
public static NetcdfFile open(RandomAccessFile raf, String location, CancelTask cancelTask, Object iospMessage) throws IOException
Open a RandomAccessFile as a NetcdfFile, if possible.- Parameters:
raf
- The open raf, is not cloised by this method.location
- human readable locatoin of this dataset.cancelTask
- used to monitor user cancellation; may be null.iospMessage
- send this message to iosp; may be null.- Returns:
- NetcdfFile or throw an Exception.
- Throws:
IOException
- if cannot open as a CDM NetCDF.
-
build
public static NetcdfFile build(IOServiceProvider spi, RandomAccessFile raf, String location, CancelTask cancelTask) throws IOException
- Throws:
IOException
-
makeValidCdmObjectName
public static String makeValidCdmObjectName(String shortName)
Create a valid CDM object name. Control chars (< 0x20) are not allowed. Trailing and leading blanks are not allowed and are stripped off. A space is converted into an underscore "_". A forward slash "/" is converted into an underscore "_".- Parameters:
shortName
- from this name- Returns:
- valid CDM object name
-
makeValidCDLName
public static String makeValidCDLName(String vname)
Escape special characters in a netcdf short name when it is intended for use in CDL.- Parameters:
vname
- the name- Returns:
- escaped version of it
-
makeFullName
public static String makeFullName(Group g)
Create a Groups's full name with appropriate backslash escaping.
-
makeFullName
public static String makeFullName(Variable v)
Create a Variable's full name with appropriate backslash escaping. Warning: do not use for a section spec.- Parameters:
v
- the Variable- Returns:
- full name
-
makeFullNameSectionSpec
public static String makeFullNameSectionSpec(Variable v)
Create a Variable's full name with appropriate backslash escaping for use in a section spec.- Parameters:
v
- the cdm node- Returns:
- full name
-
-