java中如何将流转换成文件类型

java中如何将流转换成文件类型,第1张

我查了一下,File的api

这个File的构造方法的介绍。。。

File(File

parent,

String

child)

根据

parent

抽象路径名和

child

路径名字符串誉返创建一个

File

实例。

File(String

pathname)

通过将给定路径名字符串转换成抽象路径名来创建一个新

File

实例。

File(String

parent,

String

child)

根据

parent

路径名字符串和

child

路径名字符脊罩串创建一个新

File

实例。

File(URI

uri)

通过将给定的

file:

URI

转换成一个抽象路径名来创建一个新的

File

实例。

也就意味着,如果,file这种类型,就必须有一个路径。

那,能不能在内存中虚拟一个File

file呢?

File

f

=

new

File("/1.txt")

假如这样,那么,一旦,你开始往这个file里面开流写内容。只有两种情况可能发生,一种是找不到文件,抛异常。另外一种可能是,直接create了一个文件出来,并且写进去这个文件~~

所以,如果是这样的情况,就很郁闷。

那么,在user对象中,如果非要放File文件类型格式,那么,就写到一个临时文件里吧。等用完之后删除。

如果该成byte[]

或者别的内容樱虚闹,如果你要用数据,其实会更加方便,不用开流从文件里面读取,而是直接从这个数组里面读就是了。

所以,建议把这个User里面的文件变成byte[]

一点浅见~~

另祝节日愉快~~

方法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">

Java中文件(File)的概念,其迟液实是"路码州物径" ,连Thinking in Java上都这么说.

但是流作为资源,不是抽象的概念迹禅,必须有其载体的,即一个实体的"文件".

当然你可以把流写到一个临时文件,即

File temp = File.createTempFile()里.

FileOutputStream fos = new FileOutputStream(temp)

...


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12200233.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存