java中如何将流转换成文件类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何将流转换成文件类型相关的知识,希望对你有一定的参考价值。
String Id = request.getParameter("userId");
int userId = Integer.parseInt(Id);
String sql = "select * from User where userId=?";
User u = new User();
DbHelper db = new DbHelper();
Connection connection = db.getConnection();
ResultSet rs = null;
PreparedStatement pstmt = null;
User u = new User();
try
pstmt = connection.prepareStatement(sql);
pstmt.setInt(1, userId);
//list = (List)pstmt.executeQuery();
rs = pstmt.executeQuery();
while (rs.next())
u.setString(rs.getString("userName"));
u.setFile(rs.getFile("file"));//本意是这个地方是一个图片,在数据库中的格式是Blob类型,希望能转换成File类型,放在user对象中
catch (Exception e)
e.printStackTrace();
try
pstmt.close();
connection.close();
catch (Exception e)
e.printStackTrace();
//如何将Blob类型的数据,放在user对象中
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[] 。
一点浅见~~
另祝节日愉快~~
参考资料:手打
参考技术A 呵呵,换个思路呗!boolean类型的不能传参,那就用int,传0 或者 传1 出来。
传出来之后再转换~
或者写个方法 0 代表字符串 "false" 1代表字符串"true"。
代码没有看,你试试吧! 参考技术B 你可以到甲壳虫技术论坛去看看 参考技术C 你可以到饭客网络去看看
如何利用VLC或FFMPEG将HTTP的串流转换成RTMP
参考技术A 这个应用主要是将HTTP的串流(非HLS或DASH)转换成RTMP协议传送到Adobe Flash Media Server或Wowza Media Server的媒体服务器。根据维基百科: “Real Time Messaging Protocol (RTMP) was initially a proprietary protocol developed by Macromedia for streaming audio, video and data over the Internet, between a Flash player and a server. Macromedia is now owned by Adobe, which has released an incomplete version of the specification of the protocol for public use.”
RTMP的协议有以下的参数:
RTMP: 其原始采用TCP port 1935
RTMPS: 将RTMP加载到SSL的安全机制,就类似HTTPS。
RTMPE: 采用Adobe所提供给RTMP所发展的加密版本。
RTMPT: 在RTMP上加挂he RTMP protocol 封装在HTTP请求中,可以穿越防火墙。这是一个很不错的协议,使用TCP端口80和443绕过公司对防火墙。封装的会话可能携带纯RTMP,RTMPS或RTMPE包内。
RTMP 串流
VLC 在 2.0.x版本里可以支持RTMP协议。不过,有些环境却没法执行,例如2.0.2, 2.0.3, 2.0.4, 2.0.6在Windows 2008 Server 64的服务器上确实没法执行。可以开启VLC然后开启网络串流,如“RTMP://aaa.bbb.com:1935/live/串流源“,看看可否开启。主要是VLC 2.0.x采用 ffmpeg/libav的程序库,但是, 有的包装却没法支持。所以必须先做确认。当 librtmp 的支持被启动于 ffmpeg/libav 则RTMPS才可以有功用。
以上是关于java中如何将流转换成文件类型的主要内容,如果未能解决你的问题,请参考以下文章
delphi 怎么将一个文件流转换成字符串(String到流,String到文件,相互转化)
Java读取文件-BufferedReader/FileReader/InputStreamReader/FileInputStream的关系和区别