我想读取存储在我的NSF中的css文件的内容,以将其包含在我创建的(HTML)文件中的style元素中。
FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream
似乎不是这样。
有人提出建议吗?
我尝试过
InputStream input = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream("file.css");
然后
StringBuilder sb = new StringBuilder();
sb.append("<style>").append("\n");
sb.append(convertStreamToString(input)).append("\n");
sb.append("</style>").append("\n");
static String convertStreamToString(java.io.InputStream is) {
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
效果很好
您可以使用Apache Commons IOUtils从InputStream复制到StringWriter,然后在StringWriter上使用toString()。这是执行此操作的简单方法:
private static String getResourceFile(final String filename) {
final InputStream input = FacesContext.getCurrentInstance().getExternalContext().getResourceAsStream(filename);
final StringWriter writer = new StringWriter();
try {
IOUtils.copy(input, writer, "utf-8");
} catch (final IOException e) {
System.out.println("Error reading: " + filename);
}
return writer.toString();
}