1 /*
2 * dpkg - Debian Package library and the Debian Package Maven plugin
3 * (c) Copyright 2016 Gerrit Hohl
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 */
19 package net.sourceforge.javadpkg.io;
20
21 import java.util.Date;
22
23 /**
24 * <p>
25 * The meta data of a file or directory.
26 * </p>
27 *
28 * @author Gerrit Hohl (gerrit-hohl@users.sourceforge.net)
29 * @version <b>1.0</b>, 12.05.2016 by Gerrit Hohl
30 */
31 public interface FileMetaData {
32
33
34 /**
35 * <p>
36 * Returns the path of the file excluding the name.
37 * </p>
38 *
39 * @return The path.
40 * @see #getName()
41 * @see #getAbsolutePath()
42 */
43 String getPath();
44
45
46 /**
47 * <p>
48 * Returns the name of the file.
49 * </p>
50 *
51 * @return The name.
52 * @see #getPath()
53 * @see #getAbsolutePath()
54 */
55 String getName();
56
57
58 /**
59 * <p>
60 * Returns the absolute path consisting of the path and the name of the
61 * file.
62 * </p>
63 * <p>
64 * If the file is a directory a trailing slash will be added.
65 * </p>
66 *
67 * @return The absolute path.
68 * @see #getPath()
69 * @see #getName()
70 */
71 String getAbsolutePath();
72
73
74 /**
75 * <p>
76 * Returns the flag if the file is a regular file.
77 * </p>
78 * <p>
79 * A symbolic link is also a file.
80 * </p>
81 *
82 * @return The flag: <code>true</code>, if the file is a regular file,
83 * <code>false</code> otherwise.
84 * @see #isDirectory()
85 * @see #isSymbolicLink()
86 */
87 boolean isFile();
88
89
90 /**
91 * <p>
92 * Returns the flag if the file is a directory.
93 * </p>
94 *
95 * @return The flag: <code>true</code>, if the file is a directory,
96 * <code>false</code> otherwise.
97 * @see #isFile()
98 */
99 boolean isDirectory();
100
101
102 /**
103 * <p>
104 * Returns the flag if the file is a symbolic link.
105 * </p>
106 *
107 * @return The flag: <code>true</code>, if the file is a symbolic link,
108 * <code>false</code> otherwise.
109 * @see #isFile()
110 * @see #getTargetPath()
111 */
112 boolean isSymbolicLink();
113
114
115 /**
116 * <p>
117 * Returns the target path of the symbolic link.
118 * </p>
119 *
120 * @return The target path or <code>null</code>, if this meta data does not
121 * represent a symbolic link.
122 * @see #isSymbolicLink()
123 */
124 String getTargetPath();
125
126
127 /**
128 * <p>
129 * Returns the owner of the file.
130 * </p>
131 *
132 * @return The owner.
133 */
134 FileOwner getOwner();
135
136
137 /**
138 * <p>
139 * Returns the mode of the file.
140 * </p>
141 *
142 * @return The mode.
143 */
144 FileMode getMode();
145
146
147 /**
148 * <p>
149 * Returns the textual representation of the mode including the directory
150 * flag.
151 * </p>
152 * <p>
153 * The returned value may look like this: <blockquote>
154 * <code>drwxrwxrwx</code></blockquote> or like this: <blockquote>
155 * <code>----------</code></blockquote>
156 * </p>
157 *
158 * @return The mode.
159 * @see FileMode#getText()
160 */
161 String getModeAsText();
162
163
164 /**
165 * <p>
166 * Returns the of the file in bytes.
167 * </p>
168 *
169 * @return The length or <code>-1</code>, if the length is unknown or the
170 * file is not a regular file.
171 */
172 long getLength();
173
174
175 /**
176 * <p>
177 * Returns the timestamp of the last modification.
178 * </p>
179 *
180 * @return The timestamp.
181 */
182 Date getLastModifiedDate();
183
184
185 }