package com.github.rojanu.util.io; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.regex.Pattern; public final class FileUtils { private static final Pattern WINDOWS_DIRECTORY_SEPARATOR = Pattern.compile("\\\\+"); public static final String CLASSPATH_URL_PREFIX = "classpath:"; private FileUtils() { } public static InputStream getInputStream(String location) { if (location == null || location.isEmpty()) { return null; } location = getCorrectedFilePath(location); if (location.startsWith(CLASSPATH_URL_PREFIX)) { return getInputStreamFromClasspath(location.substring(CLASSPATH_URL_PREFIX.length())); } return getInputStreamFromFileSystem(location); } private static String getCorrectedFilePath(final String location){ return WINDOWS_DIRECTORY_SEPARATOR.matcher(location).replaceAll("/"); } private static InputStream getInputStreamFromClasspath(String path) { return FileUtils.class.getClassLoader().getResourceAsStream(path); } private static InputStream getInputStreamFromFileSystem(String path) { if (!(new File(path)).exists()) { return null; } try { return new FileInputStream(path); } catch (FileNotFoundException e) { return null; } } }