Class IoUtils

java.lang.Object
software.amazon.smithy.utils.IoUtils

public final class IoUtils extends Object
Utilities for IO operations.
  • Method Details

    • toByteArray

      public static byte[] toByteArray(InputStream is)
      Reads and returns the rest of the given input stream as a byte array. Caller is responsible for closing the given input stream.
      Parameters:
      is - The input stream to convert.
      Returns:
      The converted bytes.
    • toUtf8String

      public static String toUtf8String(InputStream is)
      Reads and returns the rest of the given input stream as a string. Caller is responsible for closing the given input stream.
      Parameters:
      is - The input stream to convert.
      Returns:
      The converted string.
    • readUtf8File

      public static String readUtf8File(String path)
      Reads a file into a UTF-8 encoded string.
      Parameters:
      path - Path to the file to read.
      Returns:
      Returns the contents of the file.
      Throws:
      RuntimeException - if the file can't be read or encoded.
    • readUtf8File

      public static String readUtf8File(Path path)
      Reads a file into a UTF-8 encoded string.
      Parameters:
      path - Path to the file to read.
      Returns:
      Returns the contents of the file.
      Throws:
      RuntimeException - if the file can't be read or encoded.
    • readUtf8Resource

      public static String readUtf8Resource(ClassLoader classLoader, String resourcePath)
      Reads a class loader resource into a UTF-8 string.

      This is equivalent to reading the contents of an InputStream from ClassLoader.getResourceAsStream(java.lang.String).

      Parameters:
      classLoader - Class loader to load from.
      resourcePath - Path to the resource to load.
      Returns:
      Returns the loaded resource.
      Throws:
      UncheckedIOException - if the resource cannot be loaded.
    • readUtf8Resource

      public static String readUtf8Resource(Class<?> clazz, String resourcePath)
      Reads a class resource into a UTF-8 string.

      This is equivalent to reading the contents of an InputStream from Class.getResourceAsStream(String).

      Parameters:
      clazz - Class to load from.
      resourcePath - Path to the resource to load.
      Returns:
      Returns the loaded resource.
      Throws:
      UncheckedIOException - if the resource cannot be loaded.
    • readUtf8Url

      public static String readUtf8Url(URL url)
      Reads a URL resource into a UTF-8 string.
      Parameters:
      url - URL to load from.
      Returns:
      Returns the loaded resource.
      Throws:
      UncheckedIOException - if the resource cannot be loaded.
    • runCommand

      public static String runCommand(String command)
      Runs a process using the given command at the current directory specified by System.getProperty("user.dir").

      stderr is redirected to stdout in the return value of this method.

      Parameters:
      command - Process command to execute.
      Returns:
      Returns the combined stdout and stderr of the process.
      Throws:
      RuntimeException - if the process returns a non-zero exit code or fails.
    • runCommand

      public static String runCommand(String command, Path directory)
      Runs a process using the given command relative to the given directory.

      stderr is redirected to stdout in the return value of this method.

      Parameters:
      command - Process command to execute.
      directory - Directory to use as the working directory.
      Returns:
      Returns the combined stdout and stderr of the process.
      Throws:
      RuntimeException - if the process returns a non-zero exit code or fails.
    • runCommand

      public static int runCommand(String command, Path directory, Appendable output)
      Runs a process using the given command relative to the given directory and writes stdout and stderr to output.

      stderr is redirected to stdout when writing to output. This method does not throw when a non-zero exit code is encountered. For any more complex use cases, use ProcessBuilder directly.

      Parameters:
      command - Process command to execute.
      directory - Directory to use as the working directory.
      output - Where stdout and stderr is written.
      Returns:
      Returns the exit code of the process.
    • runCommand

      public static int runCommand(String command, Path directory, Appendable output, Map<String,String> env)
      Runs a process using the given command relative to the given directory and writes stdout and stderr to output.

      stderr is redirected to stdout when writing to output. This method does not throw when a non-zero exit code is encountered. For any more complex use cases, use ProcessBuilder directly.

      Parameters:
      command - Process command to execute.
      directory - Directory to use as the working directory.
      output - Where stdout and stderr is written.
      env - Environment variables to set.
      Returns:
      Returns the exit code of the process.
    • runCommand

      public static int runCommand(List<String> args, Path directory, Appendable output, Map<String,String> env)
      Runs a process using the given command relative to the given directory and writes stdout and stderr to output.

      stderr is redirected to stdout when writing to output. This method does not throw when a non-zero exit code is encountered. For any more complex use cases, use ProcessBuilder directly.

      Parameters:
      args - Array of arguments.
      directory - Directory to use as the working directory.
      output - Where stdout and stderr is written.
      env - Environment variables to set.
      Returns:
      Returns the exit code of the process.
    • rmdir

      public static boolean rmdir(Path dir)
      Delete a directory and all files within.

      Any found symlink is deleted, but the contents of a symlink are not deleted.

      Parameters:
      dir - Directory to delete.
      Returns:
      Returns true if the directory was deleted, or false if the directory does not exist.
      Throws:
      IllegalArgumentException - if the given path is not a directory.
      RuntimeException - if unable to delete a file or directory.