blob: f84baaec0bae54336acb3bb8097f2cf772649c9f [file] [log] [blame]
Dan Galpin80530882012-08-27 14:56:37 -07001/*
2 * Copyright (C) 2003-2009 JNode.org
3 * 2009,2010 Matthias Treydte <mt@waldheinz.de>
4 *
5 * This library is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU Lesser General Public License as published
7 * by the Free Software Foundation; either version 2.1 of the License, or
8 * (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
13 * License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this library; If not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20package de.waldheinz.fs;
21
22import java.io.IOException;
23
24/**
25 * The interface common to all file system implementations.
26 *
27 * @author Ewout Prangsma &lt;epr at jnode.org&gt;
28 * @author Matthias Treydte &lt;waldheinz at gmail.com&gt;
29 */
30public interface FileSystem {
31
32 /**
33 * Gets the root entry of this filesystem. This is usually a directory, but
34 * this is not required.
35 *
36 * @return the file system's root entry
37 * @throws IOException on read error
38 */
39 public FsDirectory getRoot() throws IOException;
40
41 /**
42 * Returns if this {@code FileSystem} is in read-only mode.
43 *
44 * @return if this {@code FileSystem} is read-only
45 */
46 public boolean isReadOnly();
47
48 /**
49 * Close this file system. After a close, all invocations of methods of
50 * this file system or objects created by this file system will throw an
51 * {@link IllegalStateException}.
52 *
53 * @throws IOException on error closing the file system
54 */
55 public void close() throws IOException;
56
57 /**
58 * Returns {@code true} if this file system is closed. If the file system
59 * is closed, no more operations may be performed on it.
60 *
61 * @return if this file system is closed
62 */
63 public boolean isClosed();
64
65 /**
66 * The total size of this file system.
67 *
68 * @return if -1 this feature is unsupported
69 * @throws IOException if an I/O error occurs
70 */
71 public long getTotalSpace() throws IOException;
72
73 /**
74 * The free space of this file system.
75 *
76 * @return if -1 this feature is unsupported
77 * @throws IOException if an I/O error occurs
78 */
79 public long getFreeSpace() throws IOException;
80
81 /**
82 * The usable space of this file system.
83 *
84 * @return if -1 this feature is unsupported
85 * @throws IOException if an I/O error occurs
86 */
87 public long getUsableSpace() throws IOException;
88
89 /**
90 * Flushes any modified file system structures to the underlying storage.
91 *
92 * @throws IOException
93 */
94 public void flush() throws IOException;
95}