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
-
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 boolean
canOpen(String location)
Find out if the location can be opened, but dont actually open it.static 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.static String
makeNameUnescaped(String vname)
Unescape any escaped characters in a name.static 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 String
makeValidPathName(String vname)
Escape special characters in a netcdf short name when it is intended for use in a fullnamestatic 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.
-
-
-
Field Detail
-
reservedFullName
public static final String reservedFullName
- See Also:
- Constant Field Values
-
-
Method Detail
-
registerIOProvider
public static void registerIOProvider(String className) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, 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.NoSuchMethodException
InvocationTargetException
-
registerIOProvider
public static void registerIOProvider(Class<?> iospClass) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException
Register an IOServiceProvider. A new instance will be created when one of its files is opened.- Parameters:
iospClass
- Class that implements IOServiceProvider.- Throws:
NoSuchMethodException
InvocationTargetException
InstantiationException
IllegalAccessException
-
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 cant find IOServiceProver
- Throws:
IOException
- if error
-
open
public static NetcdfFile open(String location, String iospClassName, int bufferSize, CancelTask cancelTask, Object iospMessage) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException, 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:
ClassNotFoundException
NoSuchMethodException
InvocationTargetException
InstantiationException
IllegalAccessException
IOException
-
canOpen
public static boolean canOpen(String location)
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
-
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
-
openInMemory
public static NetcdfFile openInMemory(String name, byte[] data, String iospClassName) throws IOException, ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException
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
ClassNotFoundException
IllegalAccessException
InstantiationException
NoSuchMethodException
InvocationTargetException
-
open
public static NetcdfFile open(RandomAccessFile raf, String location, @Nullable CancelTask cancelTask, @Nullable Object iospMessage) throws IOException
Open a RandomAccessFile as a NetcdfFile, if possible.- Parameters:
raf
- The open raf; is closed by this method onlu on IOException.location
- human readable location 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
-
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
-
makeValidPathName
public static String makeValidPathName(String vname)
Escape special characters in a netcdf short name when it is intended for use in a fullname- Parameters:
vname
- the name- Returns:
- escaped version of it
-
makeNameUnescaped
public static String makeNameUnescaped(String vname)
Unescape any escaped characters in a name.- Parameters:
vname
- the escaped name- Returns:
- unescaped 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
-
-