java.lang.Object
org.gjt.sp.jedit.MiscUtilities
Path, URL name manipulation, string manipulation, and more.
The most frequently used members of this class are:
Some path name methods:
- Version:
- $Id: MiscUtilities.java 25348 2020-06-09 19:56:24Z kpouer $
-
Method Summary
Modifier and TypeMethodDescriptionstatic String
abbreviate
(String path) The reverse of expandVariables(), returns a shortened path if possible.static String
abbreviateView
(String path) Same as abbreviate() but checks a view option which can disable the feature for jEdit UI components.static Reader
autodetect
(InputStream in, Buffer buffer) Tries to detect if the stream is gzipped, and if it has an encoding specified with an XML PI.static String
buildToVersion
(String build) Converts an internal version number (build) into a `human-readable' form.static String
static String
classToFile
(String name) Converts a class name to a file name.static String
concatPath
(String parent, String path) LikeconstructPath(java.lang.String, java.lang.String)
, exceptpath
will be appended toparent
even if it is absolute.static String
constructPath
(String parent, String path) Constructs an absolute path name from a directory and another path name.static String
constructPath
(String parent, String path1, String path2) Constructs an absolute path name from three path components.static String
escapesToChars
(String str) Converts "\n" and "\t" escapes in the specified string to newlines and tabs.static String
expandVariables
(String arg) Accepts a string from the user (or a settings file) which may contain a variable-prefix path of various syntaxes.static String
fileToClass
(String name) Converts a file name to a class name.static String
Get backup.directory property, or null.static String
getBaseName
(String path) static String
getCompleteBaseName
(String path) static String[]
getEncodings
(boolean getSelected) Returns a list of supported character encodings.static String
getFileExtension
(String path) Returns the extension of the specified filename, starting with the last dot.static String
getFileName
(String path) Returns the last component of the specified path.static String
getFileNameNoExtension
(String path) Deprecated.use getBaseName() instead.static int
getFirstSeparatorIndex
(String path) Return the first index of either / or the OS-specific file separator.static int
getLastSeparatorIndex
(String path) Return the last index of either / or the OS-specific file separator.static String
getLongestPrefix
(Object[] str, boolean ignoreCase) Returns the longest common prefix in the given set of strings.static String
getLongestPrefix
(String[] str, boolean ignoreCase) Returns the longest common prefix in the given set of strings.static String
getLongestPrefix
(List<String> str, boolean ignoreCase) Returns the longest common prefix in the given set of strings.static File
getNthBackupFile
(String name, int backup, int backups, String backupPrefix, String backupSuffix, String backupDirectory) Gets the file to store the Nth backup of the given file.static String
getParentOfPath
(String path) Returns the parent of the specified path.static String
getProtocolOfURL
(String url) Returns the protocol specified by a URL.static boolean
isAbsolutePath
(String path) Returns if the specified path name is an absolute path or URL.static boolean
Check if the filename is a backup file.static boolean
isBinary
(InputStream in) Check if an InputStream is binary.static boolean
If on JDK 1.2 or higher, make sure that tools.jar is available.static boolean
Checks if the specified string is a URL.static void
openInDesktop
(String path) Opens a file or URI using the desktop file associations.static int
Parse a Unix-style permission string (rwxrwxrwx).static boolean
pathsEqual
(String p1, String p2) static File
Prepares the directory to autosave the specified file.static File
prepareBackupDirectory
(String path) Prepares the directory to backup the specified file.static File
prepareBackupFile
(String path, int backups, String backupPrefix, String backupSuffix, String backupDirectory, int backupTimeDistance) Prepares the filename for performing backup of the given file.static File
prepareBackupFile
(String path, File backupDir) Prepares the filename for performing backup of the given file.static String
resolveSymlinks
(String path) Resolves any symbolic links in the path name specified usingFile.getCanonicalPath()
.static void
saveBackup
(File file) Saves a backup (optionally numbered) of a file.static void
saveBackup
(File file, int backups, String backupPrefix, String backupSuffix, String backupDirectory) Saves a backup (optionally numbered) of a file.static void
saveBackup
(File file, int backups, String backupPrefix, String backupSuffix, String backupDirectory, int backupTimeDistance) Saves a backup (optionally numbered) of a file.static void
saveBackup
(File file, File backupFile) Saves a backup of a local file.static void
storeProperties
(Properties props, OutputStream out, String comments) Stores properties with sorted keys.static String
Returns a string containing the stack trace of the given throwable.
-
Method Details
-
canonPath
- Parameters:
path
- The path name- Returns:
- the canonical form of the specified path name. Currently
only expands a leading
~
. For local path names only. - Since:
- jEdit 4.0pre2
-
expandVariables
Accepts a string from the user (or a settings file) which may contain a variable-prefix path of various syntaxes. Performs the reverse of abbreviate() from any platform. The function supports the following prefix syntaxes: ~/ or ~\ expand to user.home $varname (all platforms) %varname% (all platforms) ${varname} (non-Windows platforms) And expand each of these by looking at the system environment variables for possible expansions.- Returns:
- a string which is either the unchanged input string, or one with expanded variables.
- Since:
- jEdit 4.3
- See Also:
-
abbreviate
The reverse of expandVariables(), returns a shortened path if possible. Uses platform convention (%varname% on windows, $varname on other platforms)- Returns:
- an abbreviated path, replacing values with variables, if a prefix exists.
- Since:
- jEdit 4.3
- See Also:
-
abbreviateView
Same as abbreviate() but checks a view option which can disable the feature for jEdit UI components.- Since:
- jEdit 5.1
-
resolveSymlinks
Resolves any symbolic links in the path name specified usingFile.getCanonicalPath()
. For local path names only.- Since:
- jEdit 4.2pre1
-
isAbsolutePath
Returns if the specified path name is an absolute path or URL.- Since:
- jEdit 4.1pre11
-
constructPath
Constructs an absolute path name from a directory and another path name. This method is VFS-aware.- Parameters:
parent
- The directorypath
- The path name
-
constructPath
Constructs an absolute path name from three path components. This method is VFS-aware.- Parameters:
parent
- The parent directorypath1
- The first pathpath2
- The second path
-
concatPath
LikeconstructPath(java.lang.String, java.lang.String)
, exceptpath
will be appended toparent
even if it is absolute. For local path names only..- Parameters:
parent
- the parent pathpath
- the path to append to the parent
-
getFirstSeparatorIndex
Return the first index of either / or the OS-specific file separator.- Parameters:
path
- The path- Returns:
- the index of the first separator or -1 if not found
- Since:
- jEdit 4.3pre3
-
getLastSeparatorIndex
Return the last index of either / or the OS-specific file separator.- Parameters:
path
- The path- Since:
- jEdit 4.3pre3
-
getFileExtension
Returns the extension of the specified filename, starting with the last dot.- Parameters:
path
- The path- Returns:
- the last dot (.) and the text that follows, or an empty string if no dots are found. i.e. if your filename is IP-192.168.1.1-data.tar.gz it will return .gz
- See Also:
-
getFileName
Returns the last component of the specified path. This method is VFS-aware.- Parameters:
path
- The path name
-
getCompleteBaseName
- Parameters:
path
- the path name- Returns:
- the complete basename of a fileName (before the last period). i.e. if your filename is /net/log/IP-192.168.1.1-data.tar.gz it will return IP-192.168.1.1-data.tar
- Since:
- jEdit 5.0
- See Also:
-
getBaseName
- Parameters:
path
- The path name- Returns:
- the base name of a fileName (before the first period). i.e. If your filename is /net/log/IP-192.168.1.1-data.tar.gz it will return IP-192
- Since:
- jEdit 5.0
- See Also:
-
getFileNameNoExtension
Deprecated.use getBaseName() instead.- Returns:
- the same thing as getBaseName()
- Since:
- jEdit 4.0
-
getParentOfPath
Returns the parent of the specified path. This method is VFS-aware.- Parameters:
path
- The path name- Since:
- jEdit 2.6pre5
-
getProtocolOfURL
Returns the protocol specified by a URL.- Parameters:
url
- The URL- Since:
- jEdit 2.6pre5
-
isURL
Checks if the specified string is a URL.- Parameters:
str
- The string to check- Returns:
- True if the string is a URL, false otherwise
-
getNthBackupFile
public static File getNthBackupFile(String name, int backup, int backups, String backupPrefix, String backupSuffix, String backupDirectory) Gets the file to store the Nth backup of the given file.- Parameters:
name
- The last part of the filename of the file being backed up.backup
- The number of the current backup.backups
- Total number of backup copies.- Since:
- 5.0pre1
-
openInDesktop
Opens a file or URI using the desktop file associations.Uses native desktop commands for each platform, which ask the user to choose an association for files that do not already have one, using the desktop's dialog, in contrast to Desktop.open() which just throws an IOException for unknown types. If a URI is supplied, use desktop browser.
- Parameters:
path
- or URI of thing to open/browse- Since:
- jEdit 5.0
-
prepareAutosaveDirectory
Prepares the directory to autosave the specified file. A jEdit property is used to determine the directory. If there is none specified by props, then the current directory is used, but only for local files. The directory is created if it does not exist.- Parameters:
path
- path to the buffer- Returns:
- Autosave directory.
null
is returned for non-local files if no backup directory is specified in properties. - Since:
- jEdit 5.5
-
getBackupDirectory
Get backup.directory property, or null.- Returns:
- backup.directory property, or null
- Since:
- jEdit 5.5pre1
-
prepareBackupDirectory
Prepares the directory to backup the specified file. A jEdit property is used to determine the directory. If there is no dedicated backup directory specified by props, then the current directory is used, but only for local files. The directory is created if it does not exist.- Parameters:
path
- path to the buffer- Returns:
- Backup directory.
null
is returned for non-local files if no backup directory is specified in properties. - Since:
- 5.0pre1
-
prepareBackupFile
Prepares the filename for performing backup of the given file. In case of multiple backups does necessary backup renumbering. Checks whether the last backup was not earlier thanbackup.minTime
(property) ms ago. Uses jedit properties to determine backup parameters, like prefix, suffix.- Parameters:
path
- The file to back up.backupDir
- The directory, usually obtained fromprepareBackupDirectory
.- Returns:
- File suitable for backup of
file
, ornull
if the last backup was less thanbackup.minTime
ms ago. - Since:
- 5.0pre1
-
prepareBackupFile
public static File prepareBackupFile(String path, int backups, String backupPrefix, String backupSuffix, String backupDirectory, int backupTimeDistance) Prepares the filename for performing backup of the given file. In case of multiple backups does necessary backup renumbering. Checks whether the last backup was not earlier thanbackupTimeDistance
ms ago.- Parameters:
path
- The file to back up.backups
- The number of backups. Must be >= 1. If > 1, backup files will be numbered.backupDirectory
- The directory determined externally or obtained fromprepareBackupDirectory
.- Returns:
- File suitable for backup of
file
, ornull
if the last backup was less thanbackupTimeDistance
ms ago. - Since:
- 5.0pre1
-
saveBackup
Saves a backup (optionally numbered) of a file. Reads jedit properties to determine backup parameters, like prefix, suffix, directory.This version calls
prepareBackupDirectory
.- Parameters:
file
- A local file- Since:
- jEdit 5.0pre1
-
saveBackup
public static void saveBackup(File file, int backups, String backupPrefix, String backupSuffix, String backupDirectory) Saves a backup (optionally numbered) of a file.- Parameters:
file
- A local filebackups
- The number of backups. Must be >= 1. If > 1, backup files will be numbered.backupPrefix
- The backup file name prefixbackupSuffix
- The backup file name suffixbackupDirectory
- The directory where to save backups; if null, they will be saved in the same directory as the file itself.- Since:
- jEdit 4.0pre1
-
saveBackup
public static void saveBackup(File file, int backups, String backupPrefix, String backupSuffix, String backupDirectory, int backupTimeDistance) Saves a backup (optionally numbered) of a file. Requires specifying the backup directory and generates the backup filename.- Parameters:
file
- A local filebackups
- The number of backups. Must be >= 1. If > 1, backup files will be numbered.backupPrefix
- The backup file name prefixbackupSuffix
- The backup file name suffixbackupDirectory
- The directory where to save backups; if null, they will be saved in the same directory as the file itself.backupTimeDistance
- The minimum time in minutes when a backup version 1 shall be moved into version 2; if 0, backups are always moved.- Since:
- jEdit 4.2pre5
-
saveBackup
Saves a backup of a local file. Requires specifying source and destination files.- Parameters:
file
- A local filebackupFile
- A local backup file.- Since:
- jEdit 5.0pre1
-
isBinary
Check if an InputStream is binary. First this tries encoding auto detection. If an encoding is detected, the stream should be a text stream. Otherwise, this will check the first characters 100 (jEdit property vfs.binaryCheck.length) in the system default encoding. If more than 1 (jEdit property vfs.binaryCheck.count) NUL( ) was found, the stream is declared binary. This is not 100% because sometimes the autodetection could fail. This method will not close the stream. You have to do it yourself- Parameters:
in
- the stream- Returns:
true
if the stream was detected as binary- Throws:
IOException
- IOException If an I/O error occurs- Since:
- jEdit 4.3pre10
-
isBackup
Check if the filename is a backup file.- Parameters:
filename
- the filename to check- Returns:
- true if this is a backup file.
- Since:
- jEdit 4.3pre5
-
autodetect
Tries to detect if the stream is gzipped, and if it has an encoding specified with an XML PI.- Parameters:
in
- the input stream reader that must be autodetectedbuffer
- a buffer. It can be null if you only want to autodetect the encoding of a file- Returns:
- a Reader using the detected encoding
- Throws:
IOException
- io exception during read- Since:
- jEdit 4.3pre5
-
fileToClass
Converts a file name to a class name. All slash characters are replaced with periods and the trailing '.class' is removed.- Parameters:
name
- The file name
-
classToFile
Converts a class name to a file name. All periods are replaced with slashes and the '.class' extension is added.- Parameters:
name
- The class name
-
pathsEqual
- Parameters:
p1
- A path namep2
- A path name- Returns:
- True if both paths are equal, ignoring trailing slashes, as well as case insensitivity on Windows.
- Since:
- jEdit 4.3pre2
-
escapesToChars
Converts "\n" and "\t" escapes in the specified string to newlines and tabs.- Parameters:
str
- The string- Since:
- jEdit 2.3pre1
-
getLongestPrefix
Returns the longest common prefix in the given set of strings.- Parameters:
str
- The stringsignoreCase
- If true, case insensitive- Since:
- jEdit 4.2pre2
-
getLongestPrefix
Returns the longest common prefix in the given set of strings.- Parameters:
str
- The stringsignoreCase
- If true, case insensitive- Since:
- jEdit 4.2pre2
-
getLongestPrefix
Returns the longest common prefix in the given set of strings.- Parameters:
str
- The strings (callstoString()
on each object)ignoreCase
- If true, case insensitive- Since:
- jEdit 4.2pre6
-
buildToVersion
Converts an internal version number (build) into a `human-readable' form.- Parameters:
build
- The build
-
isToolsJarAvailable
public static boolean isToolsJarAvailable()If on JDK 1.2 or higher, make sure that tools.jar is available. This method should be called by plugins requiring the classes in this library.tools.jar is searched for in the following places:
- the classpath that was used when jEdit was started,
- jEdit's jars folder in the user's home,
- jEdit's system jars folder,
- java.home/lib/. In this case, tools.jar is added to jEdit's list of known jars using jEdit.addPluginJAR(), so that it gets loaded through JARClassLoader.
On older JDK's this method does not perform any checks, and returns
true
(even though there is no tools.jar).- Returns:
false
if and only if on JDK 1.2 and tools.jar could not be found. In this case it prints some warnings on Log, too, about the places where it was searched for.- Since:
- jEdit 3.2.2
-
parsePermissions
Parse a Unix-style permission string (rwxrwxrwx).- Parameters:
s
- The string (must be 9 characters long).- Since:
- jEdit 4.1pre8
-
getEncodings
Returns a list of supported character encodings.- Parameters:
getSelected
- Whether to return just the selected encodings or all.- Since:
- jEdit 4.3
-
throwableToString
Returns a string containing the stack trace of the given throwable.- Since:
- jEdit 4.2pre6
-
storeProperties
public static void storeProperties(Properties props, OutputStream out, String comments) throws IOException Stores properties with sorted keys.- Parameters:
props
- Given properties.out
- Output stream.comments
- Description of the property list.- Throws:
IOException
- Since:
- jEdit 5.3
-