Skip to content

Instantly share code, notes, and snippets.

@tennox
Last active December 6, 2018 11:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tennox/2014dc7578f27af334a239628a61b4b3 to your computer and use it in GitHub Desktop.
Save tennox/2014dc7578f27af334a239628a61b4b3 to your computer and use it in GitHub Desktop.
Spring load file from resources or from file system
public void testResourceLoad(ResourceLoader resourceLoader) {
System.out.println("resourceLoader k:" + resourceLoader.getResource("keycloak.json").exists());
System.out.println("resourceLoader /k:" + resourceLoader.getResource("/keycloak.json").exists());
System.out.println("resourceLoader c:k:" + resourceLoader.getResource("classpath:keycloak.json").exists()); // dev
System.out.println("resourceLoader c:/k:" + resourceLoader.getResource("classpath:/keycloak.json").exists()); // dev
System.out.println("resourceLoader f:k:" + resourceLoader.getResource("file:keycloak.json").exists()); // jar
System.out.println("resourceLoader f:/k:" + resourceLoader.getResource("file:/keycloak.json").exists());
System.out.println("getClass() k:" + getClass().getResource("keycloak.json"));
System.out.println("getClass() /k:" + getClass().getResource("/keycloak.json")); // dev
System.out.println("getClass() c:k:" + getClass().getResource("classpath:keycloak.json"));
System.out.println("getClass() c:/k:" + getClass().getResource("classpath:/keycloak.json"));
System.out.println("getClass() f:k:" + getClass().getResource("file:keycloak.json"));
System.out.println("getClass() f:/k:" + getClass().getResource("file:/keycloak.json"));
System.out.println("File k:" + new File("keycloak.json").exists()); // jar
System.out.println("File /k:" + new File("/keycloak.json").exists());
}
/**
* Resulting code I'm using. Results in this:
* 1. Look in working directory (e.g. when running a jar file)
* 2. Look in classpath (e.g. when developing in src/main/resources/)
**/
private InputStream getInputStream() {
Resource resource = resourceLoader.getResource("file:" + filename);
if (resource.exists()) {
LOG.info("Loading keycloak.json from file: " + resource);
} else {
resource = resourceLoader.getResource("classpath:" + filename);
if (resource.exists()) {
LOG.info("Loading keycloak.json from classpath: " + resource);
} else {
throw new RuntimeException("Unable to find keycloak.json (neither in working dir nor classpath)");
}
}
try {
return resource.getInputStream();
} catch (IOException e) {
throw new RuntimeException("Failed to get InputStream from " + resource);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment