package cc.blynk.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; /** * Simply reads full file from disk as String * * The Blynk Project. * Created by Dmitriy Dumanskiy. * Created on 2/12/2015. */ public class FileLoaderUtil { public static final String TOKEN_MAIL_BODY = "single_token_mail_body.txt"; private static final String NEW_LINE = System.getProperty("line.separator"); private static Path getFileInCurrentDir(String filename) { return Paths.get(System.getProperty("user.dir"), filename); } public static String readTokenMailBody() { return readFileAsString(TOKEN_MAIL_BODY); } public static String readDynamicMailBody() { return readFileAsString("dynamic_provisioning_mail.html"); } public static String readStaticMailBody() { return readFileAsString("static_provisioning_mail.html"); } /** * First loads file from class path after that from current folder. * So file in current folder is always overrides properties in classpath. * * @param fileName - name of properties file, for example "twitter4j.properties" */ public static String readFileAsString(String fileName) { if (!fileName.startsWith("/")) { fileName = "/" + fileName; } String result = null; try (InputStream classPath = FileLoaderUtil.class.getResourceAsStream(fileName)) { if (classPath != null) { result = load(classPath); } } catch (Exception e) { throw new RuntimeException("Error getting properties file : " + fileName, e); } Path curDirPath = getFileInCurrentDir(fileName); if (Files.exists(curDirPath)) { try { List<String> stringList = Files.readAllLines(curDirPath); StringBuilder responseData = new StringBuilder(); for (String s : stringList) { responseData.append(s).append(NEW_LINE); } result = responseData.toString(); } catch (Exception e) { throw new RuntimeException("Error getting properties file : " + fileName, e); } } return result; } private static String load(InputStream is) throws IOException{ try (BufferedReader in = new BufferedReader(new InputStreamReader(is))) { String line; StringBuilder responseData = new StringBuilder(); while ((line = in.readLine()) != null) { responseData.append(line).append(NEW_LINE); } return responseData.toString(); } } }