有时候我们需要对同一个InputStream对象使用多次.比如,客户端从服务器获取数据 ,利用HttpURLConnection的getInputStream()方法获得Stream对象,这时既要把数据显示到前台(第一次读取),又想把数据写进文件缓存到本地(第二次读取). 但第一次读取InputStream对象后,第二次再读取时可能已经到Stream的结尾了(EOFException)或者Stream已经close掉了. 而InputStream对象本身不能复制,因为它没有实现Cloneable…
最近参与了github上的一个开源项目 Mycat,是一个mysql的分库分表的中间件.发现其中读取配置文件的代码,存在频繁多次重复打开,读取,关闭的问题,代码写的很初级,稍微看过一些框架源码的人,是不会犯这样的错误的.于是对其进行了一些优化. 优化之前的代码如下所示: private static Element loadRoot() { InputStream dtd = null; InputStream xml = null; Element root = null; try { dtd…
0x00 前言 继续对图片隐写技巧的学习,这次是对JPEG文件格式的学习和理解.同PNG文件的格式对比,JPEG文件相对简单,读取其中隐藏payload的方式大同小异,两者区别在于文件格式不同,可供利用的细节存在差异. 本文相关工具: 16进制编辑器:Hex Editor 隐写检测:Stegdetect 下载地址: https://github.com/abeluck/stegdetect 编辑Exit信息:MagicEXIF 下载地址: http://www.magicexif.com/ 分析…
一.开发中难免会遇到,系统返回的数据中字典套集合,集合里面又套一层字典,然后字典里面还有字典或者集合等等的复杂结构的数据...MJExtension轻松搞定这类问题 1.解决方法一: 例:百思项目中帖子数据有个模型,模型中还有一个最热评论的集合数据,集合数据要求是ChaosComment模型数据,然后ChaosComment模型中还有一个user字典(ChaosUser模型),如图: 解决方案:利用MJExtension,实现mj_objectClassInArray方法,告诉模型中的这个集合属…
我们可以用以下方式在Selenium Webdriver中capture video. 基本步骤: 从 http://www.randelshofer.ch/monte/,下载“MonteScreenRecorder.jar” 添加Jar包到你的selenium/webdriver eclipse project 利用“ScreenRecorder” 类创建一个capture对象方法,脚本如下所示: 在测试脚本的开始处调用 “screenRecorder.start()” 方法,在结尾调用"sc…
Text属于用的频率比较高而且需要定义的地方又比较多的地方,看一下如下的把Text封装成Label进行使用. 使用的例子: Label { id: titleLabel anchors { left: parent.left right: parent.right margins: units.dp(16) } style: "title" text: "Edit info" } 封装的原始代码: import QtQuick 2.0 Text { id: labe…
一.关于运行时,已经从网络上摘抄了一片文章,这里只有项目中自己的简单使用 -- 查找隐藏的成员变量 导入头文件 可以获得隐藏的成员变量,方法,属性等 代码: 打印效果图:…
一.InputStream重用技巧(利用ByteArrayOutputStream) 对同一个InputStream对象进行使用多次. 比如,客户端从服务器获取数据 ,利用HttpURLConnection的getInputStream()方法获得Stream对象,这时既要把数据显示到前台(第一次读取),又想把数据写进文件缓存到本地(第二次读取). 但第一次读取InputStream对象后,第二次再读取时可能已经到Stream的结尾了(EOFException)或者Stream已经close掉了…
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; /** * @see InputStream转化为String String 转换为InputStream InputStream 转化为byte数组 byte转化为InputStream byte转化为String * @author…
[java] view plain copy /** * 利用BufferedReader实现Inputstream转换成String <功能详细描述> * * @param in * @return String */ public static String Inputstr2Str_Reader(InputStream in, String encode) { String str = ""; try { if (encode == null || encode.eq…
今天因为项目需要,获取到一个inputstream后,可能要多次利用它进行read的操作.由于流读过一次就不能再读了,所以得想点办法. 而InputStream对象本身不能复制,因为它没有实现Cloneable接口.此时,可以先把InputStream转化成ByteArrayOutputStream,后面要使用InputStream对象时,再从ByteArrayOutputStream转化回来就好了.代码实现如下: InputStream input =  httpconn.getInputSt…
/** * 利用BufferedReader实现Inputstream转换成String <功能详细描述> * * @param in * @return String */ public static String Inputstr2Str_Reader(InputStream in, String encode) { String str = ""; try { if (encode == null || encode.equals("")) { /…
我们在 Java 中经常会碰到如何把 InputStream 转换成 String 的情形,比如从文件或网络得到一个 InputStream,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之前我常用的办法就是按字节一次次读到缓冲区,或是建立 BufferedReader 逐行读取.其实大可不必费此周折,我们可以用 Apache commons IOUtils,或者是 JDK 1.5 后的 Scanner,还可用 Google  Guava 库的 CharStreams.到了 JDK7,…
最近有好多朋友问我,数据抓取用java怎么做,就是每天把新浪的内地新闻频道的新闻前20条,抓到自己的网站或系统里,今天我统一在这里提供一个简单的例子,由于在这个过程中还需要解析html字符串,所以,我只教朋友们抓数据,至于怎么处理在本文不考虑.接下来看例子: package net.xinhudong.html; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLCon…
一.问题提出 在进行网关引擎开发时,获取到一个http请求的inputstream后,可能要多次利用它进行read操作.由于流读过一次就不能再读了,所以需要实现InputStream的复制. 而InputStream对象本身不能复制,因为它没有实现Cloneable接口. 二.解决方案 1.方案一:使用ByteArrayOutputStream<->InputStream 此时,可以先把InputStream转化成ByteArrayOutputStream,后面要使用InputStream对象…
Java提供了很丰富的io接口,已经可以满足我们大部分读取数据的需求,这个在C读取数据需要自己定义缓冲区数组大小,而且要小心翼翼的防止缓冲区溢出的情况相当不同.一般情况下我们读取的数据都是直接读取成为String类型的,可是有些时候还是难免要读取成为二进制的数据. public int read(byte b[]) throws IOException { t;span style="white-space:pre">  </span>return readBytes…
file 从InputStream读取byte[]示例 分类专栏: java基础   public static byte[] getStreamBytes(InputStream is) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer)) !=…
简介 ByteArrayOutputStream 对byte类型数据进行写入的类 相当于一个中间缓冲层,创建ByteArrayOutputStream类实例时,内存中会创建一个byte数组类型的缓冲区,缓冲区会随着数据的不断写入而自动增长. 作用: 在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去. 注意: 关闭ByteArrayOutputStream无效,此类中的方法在关闭此流后仍可被调用,而不会产生任…
感谢原文作者:小思思smile 原文链接:https://blog.csdn.net/u014049880/article/details/52329333/ 更多请查阅Java API文档! 在创建ByteArrayOutputStream类实例时,内存中会创建一个byte数组类型的缓冲区,缓冲区会随着数据的不断写入而自动增长. 可使用toByteArray()和toString()获取数据. 关闭ByteArrayOutputStream无效,此类中的方法在关闭此流后仍可被调用,而不会产生任…
在Windows中我们经常会遇到各种小问题,而这些小问题又确实在影响着工作效率,如果能解决这些小问题,那么就能在一定程度上提高工作效率,保证心情愉悦.今天我就来分享一下几个自认为比较有用的小技巧. 保存TFS密码的方法 在Win7和Win8中使用VS2010连接TFS服务器时,每次启动后连接TFS都要求输入用户名密码: 一次两次还好,但是每次都输入就比较烦了,主要是还没有保存账户密码的选项,这样每次就只能实实在在的输入了. 为了避免这个过程,可以通过凭据管理器来保存密码: 在控制面板中有一个凭据…
原文:http://wuxiaolong.me/2015/08/10/Drawable-to-Bitmap/ Drawable互转Bitmap Drawable转Bitmap 1234 Resources res = getResources();Drawable drawable = res.getDrawable(R.drawable.myimage);BitmapDrawable bd = (BitmapDrawable) d;Bitmap bm = bd.getBitmap(); 123…
我们在 Java 中经常会碰到如何把 InputStream 转换成 String 的情形,比如从文件或网络得到一个 InputStream,需要转换成字符串输出或赋给别的变量. 未真正关注这个问题之前我常用的办法就是按字节一次次读到缓冲区,或是建立 BufferedReader 逐行读取.其实大可不必费此周折,我们可以用 Apache commons IOUtils,或者是 JDK 1.5 后的 Scanner,还可用 Google  Guava 库的 CharStreams.到了 JDK7,…
写了一个简单的 Http 请求的Class,实现了 get, post ,postfile package com.asus.uts.util; import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.…
1.String to InputStream String str = "String与InputStream相互转换"; InputStream   in_nocode   =   new   ByteArrayInputStream(str.getBytes());  InputStream   in_withcode   =   new   ByteArrayInputStream(str.getBytes("UTF-8"));   2.InputStrea…
public void saveBit(InputStream inStream) throws IOException{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); //创建一个Buffer字符串 byte[] buffer = new byte[1024]; //每次读取的字符串长度,如果为-1,代表全部读取完毕 int len = 0; //使用一个输入流从buffer里把数据读取出来 while( (len…
ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArrayInputStream的实例向数组中写入或读出byte型数据.在网络传输中我们往往要传输很多变量,我们可以利用ByteArrayOutputStream把所有的变量收集到一起,然后一次性把数据发送出去.具体用法如下: ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组. ByteA…
1:byte[]转换为InputStream InputStream sbs = new ByteArrayInputStream(byte[] buf); 2:InputStream转换为InputStreambyte[] ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[100]; //buff用于存放循环读取的临时数据 int rc = 0; while ((rc =…
这里算是一个小技巧 利用mysql的information_schema中的COLUMNS表 和navicat中的导出功能实现快速导出数据字典 CREATE TEMPORARYTABLE `COLUMNS` (   `TABLE_CATALOG` varchar(512) NOT NULL DEFAULT'',   `TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT'',   `TABLE_NAME` varchar(64) NOT NULL DEFAULT…
//1.字符串转inputstream String str="aaaaa"; InputStream in = new ByteArrayInputStream(str.getBytes()); //2.inputstream转字符串 String result = readFromInputStream(inputStream);//调用处 //将输入流InputStream变为String public String readFromInputStream(InputStream…