社区
Java SE
帖子详情
ByteArrayOutputStream关闭问题
hmy468689496
2016-09-28 09:28:06
ByteArrayOutputStream里面的close关闭无效,是一个空实现源码。那么有木有办法对其进行有效的关闭?不关闭对性能有影响吗?
项目经理问过我为什么关流问题了,,,但是这个流是关闭不掉的,所以在寻找如何有效关闭。而jdk既然让这个字节数组流关闭无效,那么自然有他的道理,那既然jdk的设计者们都没让他关,所以我在此一问性能问题的影响。共两个问题哈
...全文
1506
3
打赏
收藏
ByteArrayOutputStream关闭问题
ByteArrayOutputStream里面的close关闭无效,是一个空实现源码。那么有木有办法对其进行有效的关闭?不关闭对性能有影响吗? 项目经理问过我为什么关流问题了,,,但是这个流是关闭不掉的,所以在寻找如何有效关闭。而jdk既然让这个字节数组流关闭无效,那么自然有他的道理,那既然jdk的设计者们都没让他关,所以我在此一问性能问题的影响。共两个问题哈
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
绝不原创的飞龙
2017-12-01
打赏
举报
回复
JVM 可以监测托管内存的使用,所以如果你的一个类除了托管内存不占用其它东西,是可以完全交给 JVM 处理的。 StringWriter 也同理。 但是如果你不知道它是一个 ByteArrayOutputStream,只知道它是 OutputStream,那就没办法了。有功夫判断还不如直接 close()。
hmy468689496
2016-09-29
打赏
举报
回复
这个回答好,,就想问为啥不用关。虚拟的流,谢谢哈
小灰狼
2016-09-28
打赏
举报
回复
2
ByteArrayOutputStream/ByteInputStream 都是对内存中的字节数据的访问,只是一个虚拟的流,没有占用网络、磁盘文件等资源,所以没有关闭的必要,实现上也是空 但是,对流进行关闭是一个好习惯,或者说,你必须保证所有的 OutputStream 对象必须被调用 close
网络文件下载程序-基于Java源代码.rar
网络文件下载程序-基于Java的源代码,给定一个文件的网络URL地址,本程序将从该地址获取(下载)文件,java环境的手机,可直接运行本程序,具体代码: in = (InputStream) Connector.openInputStream(url); //打开输入流 Image img = null; //Image对象
ByteArray
OutputStream
bos = new
ByteArray
OutputStream
(); //字节输入流 int ch; while ((ch = in.read()) != -1){ //读取字节数 bos.write(ch); //写字节到输出流中 } byte imageData[] = bos.to
ByteArray
(); // 获取图像数据 in.close(); //
关闭
输入流 img = Image.createImage(imageData, 0, imageData.length); //创建Image对象 ImageItem imageItem = new ImageItem(null,img,ImageItem.LAYOUT_CENTER,"img"); //创建ImageItem对象 Form form = new Form("下载图像"); // 创建表单 form.append(imageItem); //增加显示图像到表单上 display.setCurrent(form); //设置当前显示为表单
Java生成密钥的实例.rar
Java生成密钥的实例 //产生单钥加密的密钥(myKey) KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede"); //采用DESede算法 keyGenerator.init(168); //选择DESede算法,密钥长度为112位或168位 Key myKey = keyGenerator.generateKey(); //生成密钥 System.out.println("得到单钥加密密钥"); //产生双钥的密钥对(keyPair) KeyPairGenerator keyPairGenerator=KeyPairGenerator.getInstance("RSA"); //采用RSA算法 keyPairGenerator.initialize(1024); //指定密钥长度为1024位 KeyPair keyPair = keyPairGenerator.generateKeyPair(); //生成密钥对 System.out.println("生成张三的公钥对"); //保存公钥的字节数组 File f = new File("publicKey.dat"); //保存公钥到文件publicKey.dat File
OutputStream
fout = new File
OutputStream
(f); fout.write(keyPair.getPublic().getEncoded()); //得到公钥的字节数组 fout.close(); //
关闭
文件输出流 System.out.println("保存公钥到文件: " f.getAbsolutePath()); //用Java对象序列化保存私钥,通常应对私钥加密后再保存 Object
OutputStream
oout = new Object
OutputStream
(new File
OutputStream
("privateKey.dat")); //保存私钥到文件privateKey.dat oout.writeObject(keyPair.getPrivate()); //序列化私钥 oout.close(); //
关闭
输出流 System.err.println("保存私钥到: privateKey.dat"); //从文件中得到公钥编码的字节数组 FileInputStream fin = new FileInputStream("publicKey.dat"); //打天publicKey.dat
ByteArray
OutputStream
baout = new
ByteArray
OutputStream
(); //用于写入文件的字节流 int aByte = 0; while ((aByte = fin.read())!= -1) //从文件读取一个字节 { baout.write(aByte); //写入一个字节 } fin.close(); //
关闭
文件输入流 byte[] keyBytes = baout.to
ByteArray
(); //得到公钥的字节数组 baout.close(); //
关闭
字节数组输出流
跟汤老师学Java(第15季):I/O输入输出流
本课程从零开始,以通俗易懂的方式讲解Java技术,手把手教你掌握每一个知识点。 真正做到零基础入门学习,适合初学者的教程! 课程内容包括: 1.File类2.IO流简介3.流的分类 输入流、输出流 字节流、字符流 节点流、包装流 4.字节流 InputStream:FileInputStream、
ByteArray
InputStream、ObjectInputStream
OutputStream
:File
OutputStream
、
ByteArray
OutputStream
、Object
OutputStream
5.字符流 Reader:FileReader、BufferedReader、InputStreamReader Writer:FileWriter、BufferedWriter / PrintWriter、
OutputStream
Writer 6.随机读写流 RandomAccessFile 教学全程采用笔记+代码案例的形式讲解,通俗易懂!!!
AndroidHttpURLConnection发送GET请求
创建一个URL对象: URL url = new URL(http://www.baidu.com); 调用URL对象的openConnection( )来获取HttpURLConnection对象实例: HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 设置HTTP请求使用的方法:conn.setRequestMethod("GET"); 设置连接超时,读取超时的毫秒数,以及服务器希望得到的一些消息头 conn.setConnectTimeout(6*1000); 获取服务器的响应码并进行判断,正确的响应码一般为200 if(conn.getResponseCode() != 200) 调用getInputStream()方法获得服务器返回的输入流 InputStream in = conn.getInputStream(); 读取返回的输入流中的数据,并将其中的数据转换为byte数组 使用InputStream 的read方法以及
ByteArray
OutputStream
的wirte方法 inputStream.read(buffer)
outputStream
.write(buffer, 0, len)
outputStream
.to
ByteArray
() 最后调用disconnect()方法将HTTP连接关掉 conn.disconnect(); 注意:在配置清单中使用权限
ByteArray
OutputStream
或
ByteArray
InputStream不需要
关闭
ByteArray
OutputStream
或
ByteArray
InputStream不需要
关闭
在做excel导入,有个需求是发现填写错误,要高亮错误单元格并让用户重新下载。当时用公司的云存储服务保存存错误excel,得到文件链接。 上传时先用
ByteArray
OutputStream
来暂存excel的流。编程有个好习惯是用完了流要
关闭
,就想
ByteArray
OutputStream
要不要关。 答案是关不关都行,
ByteArray
OutputStream
的close方法是空实现,
ByteArray
Outpu
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章