Java - 当不需要写入文件时 - 我应该使用输入或输出流吗?

时间:2015-03-09 09:52:56

标签: java file inputstream outputstream

我从客户端获取inputStream和文件元数据,并将其保存在我的SQL表中。该表还包含完整的文件路径和一些唯一的uid。

我希望能够传递一个uid并获得文件的“处理程序”,但是如果我需要返回outputStream,InputStream或File,似乎无法理解? 应归还哪一个?

我希望客户端使用此处理程序,原因如下:

  • 用户将其传递给另一个功能

  • 用户将决定将流转换为文件并将其复制到某个本地路径

此外,返回outputstram时,是否足以执行以下操作:

OutputStream out = new FileOutputStream(PATH_TO_MY_FILE))
return out;

我是否返回空流? out是否包含所有文件数据?

我想也许最好的方法是返回文件:

File f = new File(PATH_TO_MY_FILE);
return f;

编辑: 我的元数据包含文件名和文件类型。当我获得InputStream时,我保存在我的文件夹中并将SQL表中的路径设置为:folerPath+"/"+filename + "."+ fileType

当用户运行以下函数时:get(fileUid)我想检索完整路径(通过使用sql查询)并返回文件(hanlder)

你能告诉我吗?

由于

1 个答案:

答案 0 :(得分:1)

  

用户将决定将流转换为文件并将其复制到某个本地路径

这告诉我们您需要提供他们的内容是InputStream(或Reader),因为他们将正在阅读

您的代码将从您的数据库或其他内容中读取,可能是通过您从ResultSet#getBinaryStream或类似地点返回的InputStream。您可以直接将其提供给调用者,或者您可能更喜欢将代码放在中间,也许是通过内存缓冲区。


重新评论以下内容:

  

我将文件保存在某个DB文件夹中...

数据库没有文件夹; 文件系统有文件夹。听起来文件存储在数据库表中,只是存储在它的路径中。如果是这样,请使用FileInputStream和路径获取InputStream,然后返回给调用者。