Hallo,
aktuell funktioniert das lokal auf meinem PC gut, aber wenn ich das .war - File deploye, habe ich hier wohl ein Problem, da die Dateipfade dann nicht mehr gefunden werden....
ich möchte Dateien laden, die in meinem Projekt unter:
src/main/resources/file/upload/EmailDesignTemplates laden.
Dies hat die Struktur:

Aktuell mache ich das so:
Zunächst hole ich mir das Root Verzeichnis mit:
File dir = new File(classLoader.getResource("file/upload/EmailDesignTemplates").getFile());
Anschließend gehe ich jedes Verzeichnis durch und prüfe, ob es eine der Dateien gibt:
Wie kann ich das aber so programmieren, dass das auch direkt im .war geht?
Files wird wahrscheinlich nicht gehen? Ich brauche sowas wie:
InputStream inputStream = classLoader.getResourceAsStream(resourcePath);
Aber wie kann ich hier prüfen, ob es ein Pfad oder eine Datei ist?
aktuell funktioniert das lokal auf meinem PC gut, aber wenn ich das .war - File deploye, habe ich hier wohl ein Problem, da die Dateipfade dann nicht mehr gefunden werden....
ich möchte Dateien laden, die in meinem Projekt unter:
src/main/resources/file/upload/EmailDesignTemplates laden.
Dies hat die Struktur:

Aktuell mache ich das so:
Java:
public void uploadEmailDesignTemplate(MandatoryUserInterface employee) {
ClassLoader classLoader = getClass().getClassLoader();
File dir = new File(classLoader.getResource("file/upload/EmailDesignTemplates").getFile());
checkFileSystem(dir, true, null, null, employee);
}
private void checkFileSystem(File dir, boolean searchForSpecific, String searchTriggerDir,
String searchLanguageCode, MandatoryUserInterface employee) {
LOGGER.info("START checkFileSystem");
try {
// Ignore .DS_Store
File[] files = dir.listFiles(new FilenameFilter() {
public boolean accept(File dir, String name) {
return !name.equals(".DS_Store");
}
});
if (files != null) {
for (File file : files) {
// Ist ein Verzeichnis, dann Methode rekursiv aufrufen
if (file.isDirectory()) {
checkFileSystem(file, searchForSpecific, searchTriggerDir, searchLanguageCode, employee);
}
// Datei
else {
boolean checkTemplate = new File(dir, "template.html").exists();
boolean checkProperties = new File(dir, "config.properties").exists();
// Wenn nach einem speziellen Trigger gesucht wird
if (searchForSpecific) {
File directoryPathLanguage = file.getParentFile();
String directoryPath = directoryPathLanguage.getParentFile().getName();
if (searchTriggerDir != null)
if (directoryPath.toUpperCase().equals(searchTriggerDir.toUpperCase()) == false) {
continue;
}
}
File languageDirectoryPath = file.getParentFile();
String languageCode = languageDirectoryPath.getName();
File triggerNameParentDirectoryPath = languageDirectoryPath.getParentFile().getParentFile();
File triggerNameDirectoryPath = languageDirectoryPath.getParentFile();
String directoryTrigger = triggerNameDirectoryPath.getAbsolutePath();
String triggerName = triggerNameParentDirectoryPath.getName() + ":"
+ triggerNameDirectoryPath.getName();
// Load property - File
if (checkProperties || checkTemplate) {
if (searchForSpecific && searchLanguageCode != null) {
if (searchLanguageCode != null)
if (languageCode.toUpperCase().equals(searchLanguageCode.toUpperCase()) == false) {
continue;
}
}
// Template entsprechend erstellen
generateEmailDesignTemplateObject(directoryTrigger, triggerName, languageCode, employee);
// Aus Schleife gehen
break;
}
}
}
}
} catch (IOException e) {
LOGGER.error(ExceptionUtils.getFullStackTrace(e));
}
LOGGER.info("END checkFileSystem");
}
Zunächst hole ich mir das Root Verzeichnis mit:
File dir = new File(classLoader.getResource("file/upload/EmailDesignTemplates").getFile());
Anschließend gehe ich jedes Verzeichnis durch und prüfe, ob es eine der Dateien gibt:
- template.html
- config.properties
Wie kann ich das aber so programmieren, dass das auch direkt im .war geht?
Files wird wahrscheinlich nicht gehen? Ich brauche sowas wie:
InputStream inputStream = classLoader.getResourceAsStream(resourcePath);
Aber wie kann ich hier prüfen, ob es ein Pfad oder eine Datei ist?