public class Test {
public static void main(String[] args) {
File f = new File("D:/workspace/FileForTest.txt")
Reader r = null
try {
r = new FileReader(f)
}catch(FileNotFoundException e) {
e.printStackTrace()
}
try {
int b = 0
while((b=r.read())!=-1) {
System.out.print((char)b)
}
}catch(IOException e) {
e.printStackTrace()
}
try {
r.close()
}catch(IOException e) {
e.printStackTrace()
}
}
}
可以通过BufferedReader 流的形式进行流读取,之后通过readLine方法获取到流每行的内容。BufferedReader bre = null
try {
String file = "D:/test/test.txt"
bre = new BufferedReader(new FileReader(file))//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str)//原样输出读到的内容
};
备注: 上面的bre就是提问者需要的流。流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
方法1:专门写个函数把数据从数据库中读出,作为文件形(如test.jpg)式保存在硬盘上,然后在html中显示<img src="test.jpg"/----------------------------------------------------------------------
方法2:写一个servlet
public class GetPhotoAction extends Action {
private static final String CONTENT_TYPE = "image/gifcharset=GBK"//输出类型为 图像
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response) {
int empid
try {
empid = Integer.parseInt(request.getParameter("empid"))//员工id
} catch (NumberFormatException e) {
empid = 0
}
response.setContentType(CONTENT_TYPE)//设置输出类型
OutputStream out = null
try {
out = response.getOutputStream()//得到输出流
} catch (IOException ex1) {
ex1.printStackTrace(System.out)
}
try {
byte[] photo = Operator.getDBPhoto(empid)//从数据库中读出文件
if (photo!=null &&photo.length >0) {
out.write(photo)//输出到网页上
}
} catch (Exception ex) {
ex.printStackTrace(System.out)
}
return null
}
}
我是在struct中写的,如果你用的是jsp+servlet,把Action改成Servlet即可.
由于CONTENT_TYPE = "image/gifcharset=GBK",所以你直接在浏览器中访问这个servlet的话只能看到一张大的图片,就算写了out.write("aaaaaaaaa"),也不会看到字符输出,所以你只能在jsp中调用这个servlet
<img src="getPhotoAction.do?empid=123"alt="照片" width="185" height="218">
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)