我想将(文本)文件的内容写入JSP。我将在标签内执行此操作 获取文件内容并写入从我的标记中调用“pageContext.getOut()”生成的对象的最佳方法是什么?
我问,因为我不确定各种读者,作家和缓冲器等。
答案 0 :(得分:3)
尝试Commons-IO:http://commons.apache.org/io/api-release/index.html?org/apache/commons/io/package-summary.html
其中一个copy()
方法。
IOUtils.copy(
new FileInputStream( new File(...) ),
pageContext.getResponse().getOutputStream()
);
答案 1 :(得分:2)
您可以使用apache commons-io library。它有一个实用的方法来获取文件内容为String:
String contents = FileUtils.readFileToString(new File("somefile.txt"));
注意 - 这种方便的方法仅适用于较小的文件。如果文件很大,则需要流式方法(当您从文件中读取字节时,将字节写入输出流)
答案 2 :(得分:1)
如果您不想使用scriptlet,您可能会创建一个类似于JSTL函数的函数类,它提供了一个静态方法来执行此操作。然后使用表达式来读取文件。
示例:
package your.pkg
public class FileAccess {
public static String readTxtFile( String filename ) {
return FileUtils.readFileToString(new File(filename)); //used Bohemian's suggestion here :)
}
}
在你的taglib文件中你有这个条目:
<function>
<name>readTxtFile</name>
<function-class>
your.pkg.FileAccess
</function-class>
<function-signature>
java.lang.String readTxtFile( java.lang.String )
</function-signature>
</function>
最后在你的JSP中:
<%@taglib prefix="f" uri="your taglib uri" %>
${f:readTxtFile( 'path/to/myfile.txt' )} //reads the file and writes the return value to the JSP
答案 3 :(得分:0)
你可以做一个;
<jsp:include page="myfile.txt">
不需要读者/作家/缓冲等。