我从客户端获取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)
你能告诉我吗?
由于
答案 0 :(得分:1)
用户将决定将流转换为文件并将其复制到某个本地路径
这告诉我们您需要提供他们的内容是InputStream
(或Reader
),因为他们将正在阅读它
您的代码将从您的数据库或其他内容中读取,可能是通过您从ResultSet#getBinaryStream
或类似地点返回的InputStream
。您可以直接将其提供给调用者,或者您可能更喜欢将代码放在中间,也许是通过内存缓冲区。
重新评论以下内容:
我将文件保存在某个DB文件夹中...
数据库没有文件夹; 文件系统有文件夹。听起来文件不存储在数据库表中,只是存储在它的路径中。如果是这样,请使用FileInputStream
和路径获取InputStream
,然后返回给调用者。