1 /* 2 * Copyright 2016-2022 The OSHI Project Contributors 3 * SPDX-License-Identifier: MIT 4 */ 5 package oshi.software.os; 6 7 import java.util.List; 8 9 import oshi.annotation.concurrent.ThreadSafe; 10 11 /** 12 * The File System is a logical arrangement, usually in a hierarchial tree, where files are placed for storage and 13 * retrieval. It may consist of one or more file stores. 14 */ 15 @ThreadSafe 16 public interface FileSystem { 17 18 /** 19 * Get file stores on this machine 20 * 21 * Instantiates a list of {@link oshi.software.os.OSFileStore} objects, representing a storage pool, device, 22 * partition, volume, concrete file system or other implementation specific means of file storage. 23 * 24 * @return A list of {@link oshi.software.os.OSFileStore} objects or an empty array if none are present. 25 */ 26 List<OSFileStore> getFileStores(); 27 28 /** 29 * Get file stores on this machine 30 * 31 * Instantiates a list of {@link oshi.software.os.OSFileStore} objects, representing a storage pool, device, 32 * partition, volume, concrete file system or other implementation specific means of file storage. 33 * 34 * @param localOnly If true, filters the list to only local file stores. 35 * 36 * @return A list of {@link oshi.software.os.OSFileStore} objects or an empty array if none are present. 37 */ 38 List<OSFileStore> getFileStores(boolean localOnly); 39 40 /** 41 * The current number of open file descriptors. A file descriptor is an abstract handle used to access I/O resources 42 * such as files and network connections. On UNIX-based systems there is a system-wide limit on the number of open 43 * file descriptors. 44 * 45 * On Windows systems, this method returns the total number of handles held by Processes. While Windows handles are 46 * conceptually similar to file descriptors, they may also refer to a number of non-I/O related objects. 47 * 48 * @return The number of open file descriptors if available, 0 otherwise. 49 */ 50 long getOpenFileDescriptors(); 51 52 /** 53 * The maximum number of open file descriptors. A file descriptor is an abstract handle used to access I/O resources 54 * such as files and network connections. On UNIX-based systems there is a system-wide limit on the number of open 55 * file descriptors. 56 * 57 * On Windows systems, this method returns the theoretical max number of handles (2^24-2^15 on 32-bit, 2^24-2^16 on 58 * 64-bit). There may be a lower per-process limit. While Windows handles are conceptually similar to file 59 * descriptors, they may also refer to a number of non-I/O related objects. 60 * 61 * @return The maximum number of file descriptors if available, 0 otherwise. 62 */ 63 long getMaxFileDescriptors(); 64 65 /** 66 * The maximum number of open file descriptors per process. This returns the upper limit which applies to each 67 * process. The actual limit of a process may be lower if configured. 68 * 69 * @return The maximum number of file descriptors of each process if available, 0 otherwise. 70 */ 71 long getMaxFileDescriptorsPerProcess(); 72 }