2003-03-31 Michael Koch <konqueror@gmx.de>

* java/io/File.java
	(separator): Merged documentation from classpath.
	(separatorChar): Merged documentation from classpath.
	(pathSeparator): Merged documentation from classpath.
	(pathSeparatorChar): Merged documentation from classpath.
	(path): Merged documentation from classpath.
	(canRead): Merged documentation from classpath.
	(canWrite): Merged documentation from classpath.
	(createNewFile): Merged documentation from classpath.
	(delete): Merged documentation from classpath.
	(equals): Merged documentation from classpath.
	(exists): Merged documentation from classpath.
	(File): Renamed p to name to match classpath, merged documentation
	from classpath.
	(getAbsolutePath): Merged documentation from classpath.
	(getCanonicalPath): Merged documentation from classpath.
	(getCanonicalFile): Merged documentation from classpath.
	(getName): Merged documentation from classpath.
	(getParent): Merged documentation from classpath.
	(getParentFile): Merged documentation from classpath.
	(getPath): Merged documentation from classpath.
	(hashCode): Merged documentation from classpath.
	(isAbsolute): Merged documentation from classpath.
	(isDirectory): Merged documentation from classpath.
	(isFile): Merged documentation from classpath.
	(isHidden): Merged documentation from classpath.
	(lastModified): Merged documentation from classpath.
	(length): Merged documentation from classpath.
	(list): Merged documentation from classpath.
	(listFiles): Merged documentation from classpath.
	(toString): Merged documentation from classpath.
	(toURL): Merged documentation from classpath.
	(mkdir): Merged documentation from classpath.
	(mkdirs): Merged documentation from classpath.
	(createTempFile): Merged documentation from classpath.
	(setReadOnly): Merged documentation from classpath.
	(listRoots): Merged documentation from classpath.
	(compareTo): Merged documentation from classpath.
	(renameTo): Merged documentation from classpath.
	(setLastModified): Merged documentation from classpath.
	* java/io/PrintStream.java
	(auto_flush): Merged documentation from classpath.
	(PrintStream): Merged documentation from classpath.
	(checkError): Merged documentation from classpath.
	(setError): Merged documentation from classpath.
	(close): Merged documentation from classpath.
	(flush): Merged documentation from classpath.
	(print): Merged documentation from classpath.
	(println):  Merged documentation from classpath.
	(write): Renamed count to len to match classpath,
	merged documentation from classpath.
	* java/io/RandomAccessFile.java
	(readShort): Merged documentation from classpath.
	(readUnsignedByte): Merged documentation from classpath.
	(readUnsignedShort): Merged documentation from classpath.
	(readUTF): Merged documentation from classpath.
	(seek): Reformatted, merged documentation from classpath.
	(skipBytes): Renamed some variables to match classpath, reformatted,
	merged documentation from classpath.
	(write): Merged documentation from classpath.
	(writeBoolean): Merged documentation from classpath.
	(writeByte): Merged documentation from classpath.
	(writeShort): Merged documentation from classpath.
	(writeChar): Merged documentation from classpath.
	(writeInt): Merged documentation from classpath.
	(writeLong): Merged documentation from classpath.
	(writeFloat): Merged documentation from classpath.
	(writeDouble): Merged documentation from classpath.
	(writeBytes): Merged documentation from classpath.
	(writeChars): Merged documentation from classpath.
	(writeUTF): Reformatted.
	(getChannel): Reformatted.

From-SVN: r65081
This commit is contained in:
Michael Koch 2003-03-31 10:15:48 +00:00 committed by Michael Koch
parent c32130d9d2
commit da557ab846
4 changed files with 1175 additions and 61 deletions

View file

@ -81,12 +81,94 @@ public class File implements Serializable, Comparable
private final native boolean _access (int query);
private final native boolean _stat (int query);
/**
* This is the path separator string for the current host. This field
* contains the value of the <code>file.separator</code> system property.
* An example separator string would be "/" on the GNU system.
*/
public static final String separator = System.getProperty("file.separator");
/**
* This is the first character of the file separator string. On many
* hosts (for example, on the GNU system), this represents the entire
* separator string. The complete separator string is obtained from the
* <code>file.separator</code>system property.
*/
public static final char separatorChar = separator.charAt(0);
/**
* This is the string that is used to separate the host name from the
* path name in paths than include the host name. It is the value of
* the <code>path.separator</code> system property.
*/
public static final String pathSeparator
= System.getProperty("path.separator");
/**
* This is the first character of the string used to separate the host name
* from the path name in paths that include a host. The separator string
* is taken from the <code>path.separator</code> system property.
*/
public static final char pathSeparatorChar = pathSeparator.charAt(0);
static final String tmpdir = System.getProperty("java.io.tmpdir");
static int maxPathLen;
static boolean caseSensitive;
static String dupSeparator = separator + separator;
static
{
init_native();
}
// Native function called at class initialization. This should should
// set the maxPathLen and caseSensitive variables.
private static native void init_native();
/**
* This is the path to the file set when the object is created. It
* may be an absolute or relative path name.
*/
private String path;
// We keep a counter for use by createTempFile. We choose the first
// value randomly to try to avoid clashes with other VMs.
private static long counter = Double.doubleToLongBits (Math.random ());
/**
* This method tests whether or not the current thread is allowed to
* to read the file pointed to by this object. This will be true if and
* and only if 1) the file exists and 2) the <code>SecurityManager</code>
* (if any) allows access to the file via it's <code>checkRead</code>
* method 3) the file is readable.
*
* @return <code>true</code> if reading is allowed,
* <code>false</code> otherwise
*
* @exception SecurityException If the <code>SecurityManager</code>
* does not allow access to the file
*/
public boolean canRead ()
{
checkRead();
return _access (READ);
}
/**
* This method test whether or not the current thread is allowed to
* write to this object. This will be true if and only if 1) The
* <code>SecurityManager</code> (if any) allows write access to the
* file and 2) The file exists and 3) The file is writable. To determine
* whether or not a non-existent file can be created, check the parent
* directory for write access.
*
* @return <code>true</code> if writing is allowed, <code>false</code>
* otherwise
*
* @exception SecurityException If the <code>SecurityManager</code>
* does not allow access to the file
*/
public boolean canWrite ()
{
checkWrite();
@ -95,7 +177,23 @@ public class File implements Serializable, Comparable
private native boolean performCreate() throws IOException;
/** @since 1.2 */
/**
* This method creates a new file of zero length with the same name as
* the path of this <code>File</code> object if an only if that file
* does not already exist.
* <p>
* A <code>SecurityManager</code>checkWrite</code> check is done prior
* to performing this action.
*
* @return <code>true</code> if the file was created, <code>false</code> if
* the file alread existed.
*
* @exception IOException If an I/O error occurs
* @exception SecurityException If the <code>SecurityManager</code> will
* not allow this operation to be performed.
*
* @since 1.2
*/
public boolean createNewFile() throws IOException
{
checkWrite();
@ -103,6 +201,16 @@ public class File implements Serializable, Comparable
}
private native boolean performDelete ();
/**
* This method deletes the file represented by this object. If this file
* is a directory, it must be empty in order for the delete to succeed.
*
* @return <code>true</code> if the file was deleted, <code>false</code>
* otherwise
*
* @exception SecurityException If deleting of the file is not allowed
*/
public boolean delete ()
{
SecurityManager s = System.getSecurityManager();
@ -112,6 +220,21 @@ public class File implements Serializable, Comparable
return performDelete ();
}
/**
* This method tests two <code>File</code> objects for equality by
* comparing the path of the specified <code>File</code> against the path
* of this object. The two objects are equal if an only if 1) The
* argument is not null 2) The argument is a <code>File</code> object and
* 3) The path of the <code>File</code>argument is equal to the path
* of this object.
* <p>
* The paths of the files are determined by calling the
* <code>getPath()</code>
* method on each object.
*
* @return <code>true</code> if the two objects are equal,
* <code>false</code> otherwise.
*/
public boolean equals (Object obj)
{
if (! (obj instanceof File))
@ -123,15 +246,29 @@ public class File implements Serializable, Comparable
return (path.equalsIgnoreCase(other.path));
}
/**
* This method tests whether or not the file represented by the object
* actually exists on the filesystem.
*
* @return <code>true</code> if the file exists, <code>false</code>otherwise.
*
* @exception SecurityException If reading of the file is not permitted
*/
public boolean exists ()
{
checkRead();
return _access (EXISTS);
}
public File (String p)
/**
* This method initializes a new <code>File</code> object to represent
* a file with the specified path.
*
* @param name The path name of the file
*/
public File (String name)
{
path = normalizePath(p);
path = normalizePath (name);
}
// Remove duplicate and redundant separator characters.
@ -195,7 +332,17 @@ public class File implements Serializable, Comparable
return newpath.toString();
}
/**
* This method initializes a new <code>File</code> object to represent
* a file in the specified named directory. The path name to the file
* will be the directory name plus the separator string plus the file
* name. If the directory path name ends in the separator string, another
* separator string will still be appended.
*
* @param dirname The path to the directory the file resides in
* @param name The name of the file
*/
public File (String dirPath, String name)
{
if (name == null)
@ -213,11 +360,30 @@ public class File implements Serializable, Comparable
path = normalizePath(name);
}
public File (File dir, String name)
/**
* This method initializes a new <code>File</code> object to represent
* a file in the specified directory. If the <code>directory</code>
* argument is <code>null</code>, the file is assumed to be in the
* current directory as specified by the <code>user.dir</code> system
* property
*
* @param directory The directory this file resides in
* @param name The name of the file
*/
public File (File directory, String name)
{
this (dir == null ? null : dir.path, name);
this (directory == null ? null : directory.path, name);
}
/**
* This method returns the path of this file as an absolute path name.
* If the path name is already absolute, then it is returned. Otherwise
* the value returned is the current directory plus the separatory
* string plus the path of the file. The current directory is determined
* from the <code>user.dir</code> system property.
*
* @return The absolute path of this file
*/
public String getAbsolutePath ()
{
if (isAbsolute ())
@ -234,26 +400,70 @@ public class File implements Serializable, Comparable
return System.getProperty ("user.dir") + separatorChar + path;
}
/** @since 1.2 */
/**
* This method returns a <code>File</code> object representing the
* absolute path of this object.
*
* @return A <code>File</code> with the absolute path of the object.
*
* @since 1.2
*/
public File getAbsoluteFile ()
{
return new File (getAbsolutePath());
}
/**
* This method returns a canonical representation of the pathname of
* this file. The actual form of the canonical representation is
* different. On the GNU system, the canonical form differs from the
* absolute form in that all relative file references to "." and ".."
* are resolved and removed.
* <p>
* Note that this method, unlike the other methods which return path
* names, can throw an IOException. This is because native method
* might be required in order to resolve the canonical path
*
* @exception IOException If an error occurs
*/
public native String getCanonicalPath () throws IOException;
/** @since 1.2 */
/**
* This method returns a <code>File</code> object representing the
* canonical path of this object.
*
* @return A <code>File</code> instance representing the canonical path of
* this object.
*
* @exception IOException If an error occurs.
*
* @since 1.2
*/
public File getCanonicalFile () throws IOException
{
return new File (getCanonicalPath());
}
/**
* This method returns the name of the file. This is everything in the
* complete path of the file after the last instance of the separator
* string.
*
* @return The file name
*/
public String getName ()
{
int last = path.lastIndexOf(separatorChar);
return path.substring(last + 1);
}
/**
* This method returns a <code>String</code> the represents this file's
* parent. <code>null</code> is returned if the file has no parent. The
* parent is determined via a simple operation which removes the
*
* @return The parent directory of this file
*/
public String getParent ()
{
int last = path.lastIndexOf(separatorChar);
@ -265,18 +475,40 @@ public class File implements Serializable, Comparable
return path.substring(0, last);
}
/** @since 1.2 */
/**
* This method returns a <code>File</code> object representing the parent
* file of this one.
*
* @param A <code>File</code> for the parent of this object.
* <code>null</code>
* will be returned if this object does not have a parent.
*
* @since 1.2
*/
public File getParentFile ()
{
String parent = getParent ();
return (parent == null ? null : new File (parent));
}
/**
* Returns the path name that represents this file. May be a relative
* or an absolute path name
*
* @return The pathname of this file
*/
public String getPath ()
{
return path;
}
/**
* This method returns a hash code representing this file. It is the
* hash code of the path of this file (as returned by <code>getPath()</code>)
* exclusived or-ed with the value 1234321.
*
* @return The hash code for this object
*/
public int hashCode ()
{
if (caseSensitive)
@ -285,33 +517,93 @@ public class File implements Serializable, Comparable
return (path.toLowerCase().hashCode() ^ 1234321);
}
/**
* This method returns true if this object represents an absolute file
* path and false if it does not. The definition of an absolute path varies
* by system. As an example, on GNU systems, a path is absolute if it starts
* with a "/".
*
* @return <code>true</code> if this object represents an absolute
* file name, <code>false</code> otherwise.
*/
public native boolean isAbsolute ();
/**
* This method tests whether or not the file represented by this object
* is a directory. In order for this method to return <code>true</code>,
* the file represented by this object must exist and be a directory.
*
* @return <code>true</code> if this file is a directory, <code>false</code>
* otherwise
*
* @exception SecurityException If reading of the file is not permitted
*/
public boolean isDirectory ()
{
checkRead();
return _stat (DIRECTORY);
}
/**
* This method tests whether or not the file represented by this object
* is a "plain" file. A file is a plain file if and only if it 1) Exists,
* 2) Is not a directory or other type of special file.
*
* @return <code>true</code> if this is a plain file, <code>false</code>
* otherwise
*
* @exception SecurityException If reading of the file is not permitted
*/
public boolean isFile ()
{
checkRead();
return _stat (ISFILE);
}
/** @since 1.2 */
/**
* This method tests whether or not this file represents a "hidden" file.
* On GNU systems, a file is hidden if its name begins with a "."
* character. Files with these names are traditionally not shown with
* directory listing tools.
*
* @return <code>true</code> if the file is hidden, <code>false</code>
* otherwise.
*
* @since 1.2
*/
public boolean isHidden()
{
checkRead();
return _stat (ISHIDDEN);
}
/**
* This method returns the last modification time of this file. The
* time value returned is an abstract value that should not be interpreted
* as a specified time value. It is only useful for comparing to other
* such time values returned on the same system. In that case, the larger
* value indicates a more recent modification time.
* <p>
* If the file does not exist, then a value of 0 is returned.
*
* @return The last modification time of the file
*
* @exception SecurityException If reading of the file is not permitted
*/
public long lastModified ()
{
checkRead();
return attr (MODIFIED);
}
/**
* This method returns the length of the file represented by this object,
* or 0 if the specified file does not exist.
*
* @return The length of the file
*
* @exception SecurityException If reading of the file is not permitted
*/
public long length ()
{
checkRead();
@ -322,44 +614,168 @@ public class File implements Serializable, Comparable
FileFilter fileFilter,
Class result_type);
/**
* This method returns a array of <code>String</code>'s representing the
* list of files is then directory represented by this object. If this
* object represents a non-directory file or a non-existent file, then
* <code>null</code> is returned. The list of files will not contain
* any names such as "." or ".." which indicate the current or parent
* directory. Also, the names are not guaranteed to be sorted.
* <p>
* In this form of the <code>list()</code> method, a filter is specified
* that allows the caller to control which files are returned in the
* list. The <code>FilenameFilter</code> specified is called for each
* file returned to determine whether or not that file should be included
* in the list.
* <p>
* A <code>SecurityManager</code> check is made prior to reading the
* directory. If read access to the directory is denied, an exception
* will be thrown.
*
* @param filter An object which will identify files to exclude from
* the directory listing.
*
* @return An array of files in the directory, or <code>null</code>
* if this object does not represent a valid directory.
*
* @exception SecurityException If read access is not allowed to the
* directory by the <code>SecurityManager</code>
*/
public String[] list (FilenameFilter filter)
{
checkRead();
return (String[]) performList (filter, null, String.class);
}
/**
* This method returns a array of <code>String</code>'s representing the
* list of files is then directory represented by this object. If this
* object represents a non-directory file or a non-existent file, then
* <code>null</code> is returned. The list of files will not contain
* any names such as "." or ".." which indicate the current or parent
* directory. Also, the names are not guaranteed to be sorted.
* <p>
* A <code>SecurityManager</code> check is made prior to reading the
* directory. If read access to the directory is denied, an exception
* will be thrown.
*
* @return An array of files in the directory, or <code>null</code> if
* this object does not represent a valid directory.
*
* @exception SecurityException If read access is not allowed to the
* directory by the <code>SecurityManager</code>
*/
public String[] list ()
{
checkRead();
return (String[]) performList (null, null, String.class);
}
/** @since 1.2 */
/**
* This method returns an array of <code>File</code> objects representing
* all the files in the directory represented by this object. If this
* object does not represent a directory, <code>null</code> is returned.
* Each of the returned <code>File</code> object is constructed with this
* object as its parent.
* <p>
* A <code>SecurityManager</code> check is made prior to reading the
* directory. If read access to the directory is denied, an exception
* will be thrown.
*
* @return An array of <code>File</code> objects for this directory.
*
* @exception SecurityException If the <code>SecurityManager</code> denies
* access to this directory.
*
* @since 1.2
*/
public File[] listFiles()
{
checkRead();
return (File[]) performList (null, null, File.class);
}
/** @since 1.2 */
/**
* This method returns an array of <code>File</code> objects representing
* all the files in the directory represented by this object. If this
* object does not represent a directory, <code>null</code> is returned.
* Each of the returned <code>File</code> object is constructed with this
* object as its parent.
* <p>
* In this form of the <code>listFiles()</code> method, a filter is specified
* that allows the caller to control which files are returned in the
* list. The <code>FilenameFilter</code> specified is called for each
* file returned to determine whether or not that file should be included
* in the list.
* <p>
* A <code>SecurityManager</code> check is made prior to reading the
* directory. If read access to the directory is denied, an exception
* will be thrown.
*
* @return An array of <code>File</code> objects for this directory.
*
* @exception SecurityException If the <code>SecurityManager</code> denies
* access to this directory.
*
* @since 1.2
*/
public File[] listFiles(FilenameFilter filter)
{
checkRead();
return (File[]) performList (filter, null, File.class);
}
/** @since 1.2 */
/**
* This method returns an array of <code>File</code> objects representing
* all the files in the directory represented by this object. If this
* object does not represent a directory, <code>null</code> is returned.
* Each of the returned <code>File</code> object is constructed with this
* object as its parent.
* <p>
* In this form of the <code>listFiles()</code> method, a filter is specified
* that allows the caller to control which files are returned in the
* list. The <code>FileFilter</code> specified is called for each
* file returned to determine whether or not that file should be included
* in the list.
* <p>
* A <code>SecurityManager</code> check is made prior to reading the
* directory. If read access to the directory is denied, an exception
* will be thrown.
*
* @return An array of <code>File</code> objects for this directory.
*
* @exception SecurityException If the <code>SecurityManager</code> denies
* access to this directory.
*
* @since 1.2
*/
public File[] listFiles(FileFilter filter)
{
checkRead();
return (File[]) performList (null, filter, File.class);
}
/**
* This method returns a <code>String</code> that is the path name of the
* file as returned by <code>getPath</code>.
*
* @return A <code>String</code> representation of this file
*/
public String toString ()
{
return path;
}
/**
* This method returns a <code>URL</code> with the <code>file:</code>
* protocol that represents this file. The exact form of this URL is
* system dependent.
*
* @return A <code>URL</code> for this object.
*
* @exception MalformedURLException If the URL cannot be created
* successfully.
*/
public URL toURL () throws MalformedURLException
{
// On Win32, Sun's JDK returns URLs of the form "file:/c:/foo/bar.txt",
@ -374,6 +790,14 @@ public class File implements Serializable, Comparable
private final native boolean performMkdir ();
/**
* This method creates a directory for the path represented by this object.
*
* @return <code>true</code> if the directory was created,
* <code>false</code> otherwise
*
* @exception SecurityException If write access is not allowed to this file
*/
public boolean mkdir ()
{
checkWrite();
@ -396,6 +820,15 @@ public class File implements Serializable, Comparable
return x.mkdir();
}
/**
* This method creates a directory for the path represented by this file.
* It will also create any intervening parent directories if necessary.
*
* @return <code>true</code> if the directory was created,
* <code>false</code> otherwise
*
* @exception SecurityException If write access is not allowed to this file
*/
public boolean mkdirs ()
{
checkWrite();
@ -409,7 +842,36 @@ public class File implements Serializable, Comparable
return Long.toString(counter++, Character.MAX_RADIX);
}
/** @since 1.2 */
/**
* This method creates a temporary file in the specified directory. If
* the directory name is null, then this method uses the system temporary
* directory. The files created are guaranteed not to currently exist and
* the same file name will never be used twice in the same virtual
* machine instance.
* The system temporary directory is determined by examinging the
* <code>java.io.tmpdir</code> system property.
* <p>
* The <code>prefix</code> parameter is a sequence of at least three
* characters that are used as the start of the generated filename. The
* <code>suffix</code> parameter is a sequence of characters that is used
* to terminate the file name. This parameter may be <code>null</code>
* and if it is, the suffix defaults to ".tmp".
* <p>
* If a <code>SecurityManager</code> exists, then its <code>checkWrite</code>
* method is used to verify that this operation is permitted.
*
* @param prefix The character prefix to use in generating the path name.
* @param suffix The character suffix to use in generating the path name.
* @param directory The directory to create the file in, or
* <code>null</code> for the default temporary directory
*
* @exception IllegalArgumentException If the patterns is not valid
* @exception SecurityException If there is no permission to perform
* this operation
* @exception IOException If an error occurs
*
* @since 1.2
*/
public static File createTempFile (String prefix, String suffix,
File directory)
throws IOException
@ -473,7 +935,20 @@ public class File implements Serializable, Comparable
private native boolean performSetReadOnly();
/** @since 1.2 */
/**
* This method sets the file represented by this object to be read only.
* A read only file or directory cannot be modified. Please note that
* GNU systems allow read only files to be deleted if the directory it
* is contained in is writable.
*
* @return <code>true</code> if the operation succeeded, <code>false</code>
* otherwise.
*
* @exception SecurityException If the <code>SecurityManager</code> does
* not allow this operation.
*
* @since 1.2
*/
public boolean setReadOnly()
{
checkWrite();
@ -482,7 +957,17 @@ public class File implements Serializable, Comparable
private static native File[] performListRoots();
/** @since 1.2 */
/**
* This method returns an array of filesystem roots. Some operating systems
* have volume oriented filesystem. This method provides a mechanism for
* determining which volumes exist. GNU systems use a single hierarchical
* filesystem, so will have only one "/" filesystem root.
*
* @return An array of <code>File</code> objects for each filesystem root
* available.
*
* @since 1.2
*/
public static File[] listRoots()
{
File[] roots = performListRoots();
@ -519,13 +1004,55 @@ public class File implements Serializable, Comparable
return roots;
}
/**
* This method creates a temporary file in the system temporary directory.
* The files created are guaranteed not to currently exist and the same file
* name will never be used twice in the same virtual machine instance. The
* system temporary directory is determined by examinging the
* <code>java.io.tmpdir</code> system property.
* <p>
* The <code>prefix</code> parameter is a sequence of at least three
* characters that are used as the start of the generated filename. The
* <code>suffix</code> parameter is a sequence of characters that is used
* to terminate the file name. This parameter may be <code>null</code>
* and if it is, the suffix defaults to ".tmp".
* <p>
* If a <code>SecurityManager</code> exists, then its <code>checkWrite</code>
* method is used to verify that this operation is permitted.
* <p>
* This method is identical to calling
* <code>createTempFile(prefix, suffix, null)</code>.
*
* @param prefix The character prefix to use in generating the path name.
* @param suffix The character suffix to use in generating the path name.
*
* @exception IllegalArgumentException If the prefix or suffix are not valid.
* @exception SecurityException If there is no permission to perform
* this operation
* @exception IOException If an error occurs
*/
public static File createTempFile (String prefix, String suffix)
throws IOException
{
return createTempFile (prefix, suffix, null);
}
/** @since 1.2 */
/**
* This method compares the specified <code>File</code> to this one
* to test for equality. It does this by comparing the canonical path names
* of the files.
* <p>
* The canonical paths of the files are determined by calling the
* <code>getCanonicalPath</code> method on each object.
* <p>
* This method returns a 0 if the specified <code>Object</code> is equal
* to this one, a negative value if it is less than this one
* a positive value if it is greater than this one.
*
* @return An integer as described above
*
* @since 1.2
*/
public int compareTo(File other)
{
if (caseSensitive)
@ -534,7 +1061,27 @@ public class File implements Serializable, Comparable
return path.compareToIgnoreCase (other.path);
}
/** @since 1.2 */
/**
* This method compares the specified <code>Object</code> to this one
* to test for equality. It does this by comparing the canonical path names
* of the files. This method is identical to <code>compareTo(File)</code>
* except that if the <code>Object</code> passed to it is not a
* <code>File</code>, it throws a <code>ClassCastException</code>
* <p>
* The canonical paths of the files are determined by calling the
* <code>getCanonicalPath</code> method on each object.
* <p>
* This method returns a 0 if the specified <code>Object</code> is equal
* to this one, a negative value if it is less than this one
* a positive value if it is greater than this one.
*
* @return An integer as described above
*
* @exception ClassCastException If the passed <code>Object</code> is
* not a <code>File</code>
*
* @since 1.2
*/
public int compareTo(Object o)
{
File other = (File) o;
@ -542,6 +1089,19 @@ public class File implements Serializable, Comparable
}
private native boolean performRenameTo (File dest);
/**
* This method renames the file represented by this object to the path
* of the file represented by the argument <code>File</code>.
*
* @param dest The <code>File</code> object representing the target name
*
* @return <code>true</code> if the rename succeeds, <code>false</code>
* otherwise.
*
* @exception SecurityException If write access is not allowed to the
* file by the <code>SecurityMananger</code>.
*/
public boolean renameTo (File dest)
{
SecurityManager s = System.getSecurityManager();
@ -556,41 +1116,29 @@ public class File implements Serializable, Comparable
}
private native boolean performSetLastModified(long time);
/** @since 1.2 */
/**
* This method sets the modification time on the file to the specified
* value. This is specified as the number of seconds since midnight
* on January 1, 1970 GMT.
*
* @param time The desired modification time.
*
* @return <code>true</code> if the operation succeeded, <code>false</code>
* otherwise.
*
* @exception IllegalArgumentException If the specified time is negative.
* @exception SecurityException If the <code>SecurityManager</code> will
* not allow this operation.
*
* @since 1.2
*/
public boolean setLastModified(long time)
{
checkWrite();
return performSetLastModified(time);
}
public static final String pathSeparator
= System.getProperty("path.separator");
public static final char pathSeparatorChar = pathSeparator.charAt(0);
public static final String separator = System.getProperty("file.separator");
public static final char separatorChar = separator.charAt(0);
static final String tmpdir = System.getProperty("java.io.tmpdir");
static int maxPathLen;
static boolean caseSensitive;
static String dupSeparator = separator + separator;
static
{
init_native();
}
// Native function called at class initialization. This should should
// set the maxPathLen and caseSensitive variables.
private static native void init_native();
// The path.
private String path;
// We keep a counter for use by createTempFile. We choose the first
// value randomly to try to avoid clashes with other VMs.
private static long counter = Double.doubleToLongBits (Math.random ());
private void checkWrite ()
{
SecurityManager s = System.getSecurityManager();