public class FileUtilities
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
FileUtilities.StreamAndURL
A class that contains an InputStream and a URL
so that we don't have to follow redirects twice.
|
Modifier and Type | Field and Description |
---|---|
static java.io.BufferedReader |
STD_IN
Standard in as a reader, which will be non-null
only after a call to openForReading("System.in").
|
static java.io.PrintWriter |
STD_OUT
Standard out as a writer, which will be non-null
only after a call to openForWriting("System.out").
|
Modifier and Type | Method and Description |
---|---|
static boolean |
binaryCopyURLToFile(java.net.URL sourceURL,
java.io.File destinationFile)
Copy sourceURL to destinationFile without doing any byte conversion.
|
static byte[] |
binaryReadURLToByteArray(java.net.URL sourceURL)
Read a sourceURL without doing any byte conversion.
|
static java.lang.String |
createLink(java.nio.file.Path newLink,
java.nio.file.Path temporary,
java.nio.file.Path target)
Create a link.
|
static boolean |
deleteDirectory(java.io.File directory)
Delete a directory.
|
static boolean |
deleteDirectory(java.lang.String filepath)
Delete a directory and all of its content.
|
static void |
extractJarFile(java.lang.String jarFileName,
java.lang.String directoryName)
Extract a jar file into a directory.
|
static void |
extractJarFileIfNecessary(java.lang.String targetFileName,
java.lang.String directoryName)
If necessary, unjar the entire jar file that contains a target
file.
|
static java.net.URL |
followRedirects(java.net.URL url)
Given a URL, if it starts with http, the follow up to 10 redirects.
|
static java.lang.String |
getFileAsString(java.lang.String path)
Return the string contents of the file at the specified location.
|
static boolean |
inPath(java.lang.String command)
Return true if the command can be found in the directories
listed in the directories contained in the PATH environment
variable.
|
static void |
main(java.lang.String[] args)
Extract the contents of a jar file.
|
static java.io.File |
nameToFile(java.lang.String name,
java.net.URI base)
Given a file name or URL, construct a java.io.File object that
refers to the file name or URL.
|
static java.net.URL |
nameToURL(java.lang.String name,
java.net.URI baseDirectory,
java.lang.ClassLoader classLoader)
Given a file or URL name, return as a URL.
|
static java.io.BufferedReader |
openForReading(java.lang.String name,
java.net.URI base,
java.lang.ClassLoader classLoader)
Open the specified file for reading.
|
static java.io.Writer |
openForWriting(java.lang.String name,
java.net.URI base,
boolean append)
Open the specified file for writing or appending.
|
static java.io.InputStream |
openStreamFollowingRedirects(java.net.URL url)
Given a URL, open a stream.
|
static FileUtilities.StreamAndURL |
openStreamFollowingRedirectsReturningBoth(java.net.URL url)
Given a URL, open a stream and return an object containing
both the inputStream and the possibly redirected URL.
|
static java.lang.String |
readFromInputStream(java.io.InputStream stream)
Utility method to read a string from an input stream.
|
public static java.io.BufferedReader STD_IN
public static java.io.PrintWriter STD_OUT
public static boolean binaryCopyURLToFile(java.net.URL sourceURL, java.io.File destinationFile) throws java.io.IOException
sourceURL
- The source URLdestinationFile
- The destination File.java.io.IOException
- If the source file does not exist.public static byte[] binaryReadURLToByteArray(java.net.URL sourceURL) throws java.io.IOException
sourceURL
- The source URLjava.io.IOException
- If the source URL does not exist.public static java.lang.String createLink(java.nio.file.Path newLink, java.nio.file.Path temporary, java.nio.file.Path target) throws java.io.IOException
newLink
- the link to be createdtemporary
- the path to the temporary location where the directory to be replaced by the link should be placed.target
- the target of the link to be created.java.io.IOException
- If there are problems creating the linkpublic static boolean deleteDirectory(java.io.File directory)
directory
- the File naming the directory.public static boolean deleteDirectory(java.lang.String filepath)
filepath
- The path for the directory or file to be deleted.public static void extractJarFile(java.lang.String jarFileName, java.lang.String directoryName) throws java.io.IOException
jar -xf
command.jarFileName
- The name of the jar file to extractdirectoryName
- The name of the directory. If this argument
is null, then the files are extracted in the current directory.java.io.IOException
- If the jar file cannot be opened, or
if there are problems extracting the contents of the jar filepublic static void extractJarFileIfNecessary(java.lang.String targetFileName, java.lang.String directoryName) throws java.io.IOException
targetFileName
- If the file exists relative to the
directoryName, then do nothing. Otherwise, look for the
targetFile in the classpath and unjar the jar file in which it
is found in the directory named by the directoryName
parameter.directoryName
- The name of the directory in which to
search for the file named by the targetFileName
parameter and in which the jar file is possibly unjared.java.io.IOException
- If there is problem finding the target
file or extracting the jar file.public static java.net.URL followRedirects(java.net.URL url) throws java.io.IOException
If the URL is null or does not start with "http", then return the URL.
url
- The URL to be followed.java.io.IOException
- If there is a problem opening the URL or
if there are more than 10 redirects.public static java.lang.String getFileAsString(java.lang.String path) throws java.io.IOException
path
- The location.java.io.IOException
- If the file cannot be read.public static boolean inPath(java.lang.String command)
command
- The command for which to search.public static void main(java.lang.String[] args)
args
- An array of arguments. The first argument
names the jar file to be extracted. The first argument
is required. The second argument names the directory in
which to extract the files from the jar file. The second
argument is optional.public static java.io.File nameToFile(java.lang.String name, java.net.URI base)
If the name begins with "xxxxxxCLASSPATHxxxxxx" or "$CLASSPATH" then search for the file relative to the classpath.
Note that "xxxxxxCLASSPATHxxxxxx" is the value of the globally defined constant $CLASSPATH available in the Ptolemy II expression language.
If the name begins with $CLASSPATH or "xxxxxxCLASSPATHxxxxxx" but that name cannot be found in the classpath, the value of the ptolemy.ptII.dir property is substituted in.
The file need not exist for this method to succeed. Thus, this method can be used to determine whether a file with a given name exists, prior to calling openForWriting(), for example.
This method is similar to
nameToURL(String, URI, ClassLoader)
except that in this method, the file or URL must be readable.
Usually, this method is use for write a file and
nameToURL(String, URI, ClassLoader)
is used for reading.
name
- The file name or URL.base
- The base for relative URLs.nameToURL(String, URI, ClassLoader)
public static java.net.URL nameToURL(java.lang.String name, java.net.URI baseDirectory, java.lang.ClassLoader classLoader) throws java.io.IOException
Note that "xxxxxxCLASSPATHxxxxxx" is the value of the globally defined constant $CLASSPATH available in the Ptolemy II expression language. II expression language.
If no file is found, then throw an exception.
This method is similar to nameToFile(String, URI)
except that in this method, the file or URL must be readable.
Usually, this method is use for reading a file and
is used for writing nameToFile(String, URI)
.
name
- The name of a file or URL.baseDirectory
- The base directory for relative file names,
or null to specify none.classLoader
- The class loader to use to locate system
resources, or null to use the system class loader that was used
to load this class.java.io.IOException
- If the file cannot be read, or
if the file cannot be represented as a URL (e.g. System.in), or
the name specification cannot be parsed.nameToFile(String, URI)
public static java.io.BufferedReader openForReading(java.lang.String name, java.net.URI base, java.lang.ClassLoader classLoader) throws java.io.IOException
nameToURL(String, URI, ClassLoader)
If the file name is not absolute, the it is assumed to be relative to
the specified base URI.name
- File name.base
- The base URI for relative references.classLoader
- The class loader to use to locate system
resources, or null to use the system class loader that was used
to load this class.java.io.IOException
- If the file cannot be opened.nameToURL(String, URI, ClassLoader)
public static java.io.Writer openForWriting(java.lang.String name, java.net.URI base, boolean append) throws java.io.IOException
nameToFile(String, URI)
and create a file writer. If the
file does not exist, then create it. If the file name is not
absolute, the it is assumed to be relative to the specified
base directory. If permitted, this method will return a
Writer that will simply overwrite the contents of the file. It
is up to the user of this method to check whether this is OK
(by first calling nameToFile(String, URI)
and calling
exists() on the returned value).name
- File name.base
- The base URI for relative references.append
- If true, then append to the file rather than
overwriting.java.io.IOException
- If the file cannot be opened
or created.public static java.io.InputStream openStreamFollowingRedirects(java.net.URL url) throws java.io.IOException
If the URL starts with "http", then follow up to 10 redirects and return the the final HttpURLConnection.
If the URL does not start with "http", then call URL.openStream().
url
- The URL to be opened.java.io.IOException
- If there is a problem opening the URL or
if there are more than 10 redirects.public static FileUtilities.StreamAndURL openStreamFollowingRedirectsReturningBoth(java.net.URL url) throws java.io.IOException
If the URL starts with "http", then follow up to 10 redirects and return the the final HttpURLConnection.
If the URL does not start with "http", then call URL.openStream().
url
- The URL to be opened.java.io.IOException
- If there is a problem opening the URL or
if there are more than 10 redirects.public static java.lang.String readFromInputStream(java.io.InputStream stream) throws java.io.IOException
stream
- The stream.java.io.IOException
- If the stream cannot be read.