1 /*
2 * Copyright 2016-2022 The OSHI Project Contributors
3 * SPDX-License-Identifier: MIT
4 */
5 package oshi.software.os;
6
7 import oshi.annotation.concurrent.ThreadSafe;
8
9 /**
10 * A FileStore represents a storage pool, device, partition, volume, concrete file system or other implementation
11 * specific means of file storage. This object carries the same interpretation as core Java's
12 * {@link java.nio.file.FileStore} class, with additional information.
13 */
14 @ThreadSafe
15 public interface OSFileStore {
16
17 /**
18 * Name of the File System. A human-readable label that does not necessarily correspond to a file system path.
19 *
20 * @return The file system name
21 */
22 String getName();
23
24 /**
25 * Volume name of the File System. Generally a path representing the device (e.g., {@code /dev/foo} which is being
26 * mounted.
27 *
28 * @return The volume name of the file system
29 */
30 String getVolume();
31
32 /**
33 * Label of the File System. An optional replacement for the name on Windows and Linux.
34 *
35 * @return The volume label of the file system. Only relevant on Windows and on Linux, if assigned; otherwise
36 * defaults to the FileSystem name. On other operating systems is redundant with the name.
37 */
38 String getLabel();
39
40 /**
41 * Logical volume of the File System.
42 *
43 * Provides an optional alternative volume identifier for the file system. Only supported on Linux, provides symlink
44 * value via '/dev/mapper/' (used with LVM file systems).
45 *
46 * @return The logical volume of the file system
47 */
48 String getLogicalVolume();
49
50 /**
51 * Mount point of the File System. The directory users will normally use to interface with the file store.
52 *
53 * @return The mountpoint of the file system
54 */
55 String getMount();
56
57 /**
58 * Description of the File System.
59 *
60 * @return The file system description
61 */
62 String getDescription();
63
64 /**
65 * Type of the File System (FAT, NTFS, etx2, ext4, etc.)
66 *
67 * @return The file system type
68 */
69 String getType();
70
71 /**
72 * Filesystem options.
73 *
74 * @return A comma-deimited string of options
75 */
76 String getOptions();
77
78 /**
79 * UUID/GUID of the File System.
80 *
81 * @return The file system UUID/GUID
82 */
83 String getUUID();
84
85 /**
86 * Free space on the drive. This space is unallocated but may require elevated permissions to write.
87 *
88 * @return Free space on the drive (in bytes)
89 */
90 long getFreeSpace();
91
92 /**
93 * Usable space on the drive. This is space available to unprivileged users.
94 *
95 * @return Usable space on the drive (in bytes)
96 */
97 long getUsableSpace();
98
99 /**
100 * Total space/capacity of the drive.
101 *
102 * @return Total capacity of the drive (in bytes)
103 */
104 long getTotalSpace();
105
106 /**
107 * Usable / free inodes on the drive. Not applicable on Windows.
108 *
109 * @return Usable / free inodes on the drive (count), or -1 if unimplemented
110 */
111 long getFreeInodes();
112
113 /**
114 * Total / maximum number of inodes of the filesystem. Not applicable on Windows.
115 *
116 * @return Total / maximum number of inodes of the filesystem (count), or -1 if unimplemented
117 */
118 long getTotalInodes();
119
120 /**
121 * Make a best effort to update all the statistics about the file store without needing to recreate the file store
122 * list. This method provides for more frequent periodic updates of file store statistics.
123 *
124 * @return True if the update was (probably) successful, false if the disk was not found
125 */
126 boolean updateAttributes();
127 }