* Abstraction for a that exists on the machine {@link Core} is being run on.
* This abstraction layer exists to make it possible to run jSite as a daemon
* and only connect to it via network.
- *
+ *
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
*/
public interface ProjectFile {
/**
* Returns the name of the file.
- *
+ *
* @return The name of the file
*/
public String getName();
/**
+ * Returns the parent of this project file.
+ *
+ * @return The parent of this project file, or <code>null</code> if this
+ * project file does not have a parent
+ */
+ public ProjectFile getParent();
+
+ /**
* Returns all parent files of this file. This file is the last file in the
* returned list.
- *
+ *
* @return A list of all parents of this file and this file itself
*/
public List<ProjectFile> getParents();
/**
* Returns the complete path of this file, without a leading
* {@link File#separator}.
- *
+ *
* @return The complete path of this file
*/
public String getCompletePath();
/**
+ * Returns the size of the file. If this file is a directory, the returned
+ * value is unspecified.
+ *
+ * @see File#length()
+ * @return The size of the file
+ */
+ public long getSize();
+
+ /**
* Returns whether this file is a directory.
- *
+ *
* @return <code>true</code> if this file is a directory,
* <code>false</code> otherwise
*/
/**
* Returns whether this file is a file (as opposed to being a directory).
- *
+ *
* @return <code>true</code> if this file is a file, <code>false</code>
* otherwise
*/
/**
* Returns whether this file is hidden.
- *
+ *
* @return <code>true</code> if this file is hidden
*/
public boolean isHidden();
/**
* If this file is a directory, returns all files in this directory.
- *
+ *
* @see #isDirectory()
* @return All files in this directory if this file is a directory, or
* <code>null</code> if this file is not a directory