WinFileSystem (install4j API)
Description: declaration: package: com.install4j.api.windows, class: WinFileSystem

# Class WinFileSystem

java.lang.Object
com.install4j.api.windows.WinFileSystem

public class WinFileSystem extends Object
Collection of static methods to access Microsoft Windows-specific folder locations and to execute native file system operations.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static boolean`
  `createShellLink(File file, File shortcutTo, File iconFile)`
  Creates a shell link.
  `static boolean`
  `createShellLink(File file, File shortcutTo, File iconFile, String arguments)`
  Creates a shell link.
  `static boolean`
  `createShellLink(File file, File shortcutTo, File iconFile, String arguments, String description)`
  Creates a shell link.
  `static boolean`
  `createShellLink(File file, File shortcutTo, File iconFile, String arguments, String description, File startIn)`
  Creates a shell link.
  `static boolean`
  `createShellLink(File file, File shortcutTo, File iconFile, String arguments, String description, File startIn, ShowCommand showCommand)`
  Creates a shell link.
  `static void`
  `createStartMenuEntry(String folder, String entryName, File destination, boolean allUsers, File icon)`
  Creates a start menu entry.
  `static void`
  `createStartMenuEntry(String folder, String entryName, File destination, boolean allUsers, File icon, String arguments)`
  Creates a start menu entry.
  `static void`
  `createStartMenuEntry(String folder, String entryName, File destination, boolean allUsers, File icon, String arguments, boolean runAsAdministrator)`
  Creates a start menu entry.
  `static File`
  `getCommonFilesDirectory()`
  Returns a folder for components that are shared across applications.
  `static DriveType`
  `getDriveType(File file)`
  Tests on what kind of drive the given file is (or would be) located.
  `static File`
  `getProgramDataDirectory()`
  Returns the program data directory where applications can save data that is not specific to particular users.
  `static File`
  `getProgramFilesDirectory()`
  Returns the program files directory of the current Windows installation.
  `static File`
  `getSpecialFolder(SpecialFolder folderType, boolean allUsers)`
  Returns Windows-specific directories like the start menu or the desktop.
  `static File`
  `getSystemDirectory()`
  Returns the system directory.
  `static File`
  `getWindowsDirectory()`
  Returns the Windows directory.
  `static boolean`
  `moveWithDelayUntilReboot(File source, File destination)`
  Calls the win32 API function MoveFileEx with MOVEFILE_DELAY_UNTIL_REBOOT.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Method Details

  - ### getSpecialFolder

    public static File getSpecialFolder(SpecialFolder folderType, boolean allUsers)
    Returns Windows-specific directories like the start menu or the desktop.
    Parameters:
      `folderType` - specifies the requested folder type.
      `allUsers` - if this parameter is `true` and if the current user is in the Administrators group, the method returns the requested folder for all users. Otherwise, it returns the folder for the current user.
    Returns:
      the requested folder location.

  - ### getProgramFilesDirectory

    public static File getProgramFilesDirectory()
    Returns the program files directory of the current Windows installation. A typical path is `C:\Program Files`.
    Returns:
      the program files directory.

  - ### getCommonFilesDirectory

    public static File getCommonFilesDirectory()
    Returns a folder for components that are shared across applications. A typical path is `C:\Program Files\Common Files`.
    Returns:
      the common files directory.

  - ### getProgramDataDirectory

    public static File getProgramDataDirectory()
    Returns the program data directory where applications can save data that is not specific to particular users. A typical path is `C:\ProgramData`.
    Returns:
      the common files directory.

  - ### getWindowsDirectory

    public static File getWindowsDirectory()
    Returns the Windows directory. A typical path is `C:\Windows`.
    Returns:
      the Windows directory.

  - ### getSystemDirectory

    public static File getSystemDirectory()
    Returns the system directory. A typical path is `C:\Windows\system32`
    Returns:
      the system directory.

  - ### createShellLink

    public static boolean createShellLink(File file, File shortcutTo, File iconFile)
    Creates a shell link. Note that Windows might change the link suffix from `lnk` to `pif`, if you are linking to a DOS executable or a batch file. This is the same as calling `createShellLink(file, shortcutTo, iconFile, null, null)`
    Parameters:
      `file` - the shell link that should be created including the `lnk` suffix.
      `shortcutTo` - the file it should link to.
      `iconFile` - an optional icon file. If `null` is passed, the default icon of the `shortcutTo` target will be used.
    Returns:
      whether the link could be created or not.
    See Also:
      - `createShellLink(File, File, File, String)`

  - ### createShellLink

    public static boolean createShellLink(File file, File shortcutTo, File iconFile, String arguments)
    Creates a shell link. Note that Windows might change the link suffix from `lnk` to `pif`, if you are linking to a DOS executable or a batch file. This is the same as calling `createShellLink(file, shortcutTo, iconFile, arguments, null)`
    Parameters:
      `file` - the shell link that should be created including the `lnk` suffix.
      `shortcutTo` - the file it should link to.
      `iconFile` - an optional icon file. If `null` is passed, the default icon of the `shortcutTo` target will be used.
      `arguments` - the arguments passed to the target.
    Returns:
      whether the link could be created or not.

  - ### createShellLink

    public static boolean createShellLink(File file, File shortcutTo, File iconFile, String arguments, String description)
    Creates a shell link. Note that Windows might change the link suffix from `lnk` to `pif`, if you are linking to a DOS executable or a batch file.
    Parameters:
      `file` - the shell link that should be created including the `lnk` suffix.
      `shortcutTo` - the file it should link to.
      `iconFile` - an optional icon file. If `null` is passed, the default icon of the `shortcutTo` target will be used.
      `arguments` - the arguments passed to the target.
      `description` - the description used in the tooltip
    Returns:
      whether the link could be created or not.

  - ### createShellLink

    public static boolean createShellLink(File file, File shortcutTo, File iconFile, String arguments, String description, File startIn)
    Creates a shell link. Note that Windows might change the link suffix from `lnk` to `pif`, if you are linking to a DOS executable or a batch file.
    Parameters:
      `file` - the shell link that should be created including the `lnk` suffix.
      `shortcutTo` - the file it should link to.
      `iconFile` - an optional icon file. If `null` is passed, the default icon of the `shortcutTo` target will be used.
      `arguments` - the arguments passed to the target.
      `description` - the description used in the tooltip
      `startIn` - the working directory for the executable
    Returns:
      whether the link could be created or not.

  - ### createShellLink

    public static boolean createShellLink(File file, File shortcutTo, File iconFile, String arguments, String description, File startIn, ShowCommand showCommand)
    Creates a shell link. Note that Windows might change the link suffix from `lnk` to `pif`, if you are linking to a DOS executable or a batch file.
    Parameters:
      `file` - the shell link that should be created including the `lnk` suffix.
      `shortcutTo` - the file it should link to.
      `iconFile` - an optional icon file. If `null` is passed, the default icon of the `shortcutTo` target will be used.
      `arguments` - the arguments passed to the target.
      `description` - the description used in the tooltip
      `startIn` - the working directory for the executable
      `showCommand` - the window show command
    Returns:
      whether the link could be created or not.

  - ### createStartMenuEntry

    public static void createStartMenuEntry(String folder, String entryName, File destination, boolean allUsers, File icon) throws IOException
    Creates a start menu entry.
    Parameters:
      `folder` - the name of the folder where the entry should be created. Leave empty for top-level entries.
      `entryName` - the name of the menu entry. You can create subfolders with backslashes.
      `destination` - the file that should be linked to
      `allUsers` - whether the entry should be created for all users or not
      `icon` - an optional icon file. If `null` is passed, the default icon of the `destination` target will be used.
    Throws:
      `IOException` - if the start menu entry could not be created

  - ### createStartMenuEntry

    public static void createStartMenuEntry(String folder, String entryName, File destination, boolean allUsers, File icon, String arguments) throws IOException
    Creates a start menu entry.
    Parameters:
      `folder` - the name of the folder where the entry should be created. Leave empty for top-level entries.
      `entryName` - the name of the menu entry. You can create subfolders with backslashes.
      `destination` - the file that should be linked to
      `allUsers` - whether the entry should be created for all users or not
      `icon` - an optional icon file. If `null` is passed, the default icon of the `destination` target will be used.
      `arguments` - optional arguments given to the destination. Can be `null`
    Throws:
      `IOException` - if the start menu entry could not be created

  - ### createStartMenuEntry

    public static void createStartMenuEntry(String folder, String entryName, File destination, boolean allUsers, File icon, String arguments, boolean runAsAdministrator) throws IOException
    Creates a start menu entry.
    Parameters:
      `folder` - the name of the folder where the entry should be created. Leave empty for top-level entries.
      `entryName` - the name of the menu entry. You can create subfolders with backslashes.
      `destination` - the file that should be linked to
      `allUsers` - whether the entry should be created for all users or not
      `icon` - an optional icon file. If `null` is passed, the default icon of the `destination` target will be used.
      `arguments` - optional arguments given to the destination. Can be `null`
      `runAsAdministrator` - whether the entry should be run as administrator
    Throws:
      `IOException` - if the start menu entry could not be created

  - ### moveWithDelayUntilReboot

    public static boolean moveWithDelayUntilReboot(File source, File destination)
    Calls the win32 API function MoveFileEx with MOVEFILE_DELAY_UNTIL_REBOOT. You must be an administrator to call this function.
    Parameters:
      `source` - the source file. Must be on the same drive as the destination file.
      `destination` - the destination file. If empty, the source file will be deleted.
    Returns:
      true if the operation could be registered successfully.

  - ### getDriveType

    public static DriveType getDriveType(File file)
    Tests on what kind of drive the given file is (or would be) located.
    Parameters:
      `file` - an existing or non-existing file
    Returns:
      a constant of `DriveType`.