精华内容
下载资源
问答
  • Java中输入流转字节数组输入流转字节数组应用场景 输入流转字节数组 /** * @param is 输入流 * @return 将输入流转为字节数组 */ public static byte[] streamToByte(InputStream is) { ...

    Java中输入流转字节数组

    输入流转字节数组

    	/**
    	 * @param is 输入流
    	 * @return 将输入流转为字节数组
    	 */
    	public static byte[] streamToByte(InputStream is) {
    		ByteArrayOutputStream bos = new ByteArrayOutputStream();
    		byte[] bytes = new byte[1024];
    		int i = -1;
    		try {
    			//将输入流中的数据读到bytes中,i表示bytes的长度,当读完时i=-1退出循环
    			while ((i = is.read(bytes)) != -1) {
    				//将指定的字节数组从偏移量off开始,写入i个字节到输出流
    				bos.write(bytes, 0, i);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return bos.toByteArray();
    	}
    

    应用场景

    1. 先来看第一种应用
    	public static void main(String[] args) throws IOException {
    		File file = new File("D:\\img.gif");
    		FileInputStream fileInputStream = new FileInputStream(file);
    		String base64 = Base64.getEncoder().encodeToString(streamToByte(fileInputStream));
    		System.out.println("<img src = 'data:image/gif;base64," + base64 + "' />");
    		//输出结果<img src = 'data:image/gif;base64,……(此处省略编码后的文件)' />
    	}
    

    Java程序员们应该对最后输出的这一行代码不陌生。以base64编码的格式将图片传给了前端。当有动态生成的二维码等图片需要传给前端时,不失为一种好办法。

    1. 再来看下面一种应用
    	public static void main(String[] args) throws IOException {
    		File file = new File("D:\\img.gif");
    		FileInputStream fileInputStream = new FileInputStream(file);
    		byte[] bytes = streamToByte(fileInputStream);
    		for (int i = 0 ; i < bytes.length ; i+= 1024){
    			bytes[i] -= 1;
    		}
    		FileOutputStream fileOutputStream = new FileOutputStream("D:\\img1.gif");
    		fileOutputStream.write(bytes);
    		fileOutputStream.flush();
    		fileOutputStream.close();
    	}
    

    这可以算是一种加密方法了吧,如果别人不知道你对文件做了什么,那别人只会以为文件损坏了,那么别人自然无法窥探到你的隐私了。而当你想用的时候,只需将数据返回原样的行了。
    (小声哔哔:用这种方法能在QQ上传播原本不能传播的东西哟,当然你也可以选择加密压缩)

    展开全文
  • java 输入流转字节数组

    千次阅读 2014-09-10 15:23:55
     * 输入流转字节流  * */  private byte[] InputStreamToByte(InputStream is) throws IOException {  ByteArrayOutputStream bytestream = new ByteArrayOutputStream();  byte[] buffer=new byte[1024]; ...
     /**
      * 输入流转字节流
      * */
     private byte[] InputStreamToByte(InputStream is) throws IOException {
      ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
      byte[] buffer=new byte[1024];
      int ch;
      /**
       *
       * */
      while ((ch = is.read(buffer)) != -1) {
       bytestream.write(buffer,0,ch);
      }
      byte data[] = bytestream.toByteArray();
      bytestream.close();
      return data;
     }
    展开全文
  •    既然ClassLoad 能获取文件,那就通过他来获取文件流,在通过文件流转换成字节数组就完美解决问题! public WXConfig() throws Exception { //从微信商户平台下载的安全证书存放的路径 InputStream certStream ...

    一. 服务环境:

       spring cloud 微服务 jar 方式进行部署。

    二. 文件在项目中的位置:在这里插入图片描述

    三. 情景再现:

       在内网本地测试环境(因为小程序需要https认证的服务才能交互,小程序无法在内网给测试测,因此没有打jar包进行测试),在idea中使用下面方式与前端进行联调,使用花生壳进行外网映射,接收微信回调,一切进行的都很顺利。

     public WXConfig() throws Exception {
            //从微信商户平台下载的安全证书存放的路径
            // 获取URL
            URL url = getClass().getClassLoader().getResource("apiclient_cert.p12");
            // 通过url获取File的绝对路径
            File file = new File(url.getFile());
            InputStream certStream = new FileInputStream(file);
            this.certData = new byte[(int) file.length()];
            certStream.read(this.certData);
            certStream.close();
        }
    

       等部署到外网环境进行测试的时候,进行退款的时候必须认证证书,可是证书却获取不到,出现以下异常:

    java.io.FileNotFoundException: file:/usr/local/package_project/xuanle-prod2/business-xuanle-service-prod2.jar!/BOOT-INF/classes!/apiclient_cert.p12 (No such file or directory)
    	at java.io.FileInputStream.open0(Native Method)
    	at java.io.FileInputStream.open(FileInputStream.java:195)
    	at java.io.FileInputStream.<init>(FileInputStream.java:138)
    	at com.project.util.wx.WXConfig.<init>(WXConfig.java:31)
    	at com.project.service.wx.MiniPayService.refundToWeixin(MiniPayService.java:306)
    	at com.project.service.wx.MiniPayService.refund(MiniPayService.java:288)
    	at com.project.controller.wx.MiniProgramController.miniRefund(MiniProgramController.java:92)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    

    四. 解决问题

       然后想办法解决问题,我们使用maven将项目打成jar包时,此时的 .jar是一个可执行文件。虽然通过之前的方式可以拿到证书的路径,但是却无法通过new File(String filePath) 获取路径中的文件。因为 .jar本身就是一个可执行文件,又怎么从文件中获取文件呢?
       既然ClassLoad 能获取文件,那就通过他来获取文件流,在通过文件流转换成字节数组就完美解决问题!

    public WXConfig() throws Exception {
            //从微信商户平台下载的安全证书存放的路径
            InputStream certStream = WXConfig.class.getClassLoader().getResourceAsStream("apiclient_cert.p12");
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int ch;
            while ((ch = certStream.read(buffer)) != -1) {
                outputStream.write(buffer,0, ch);
            }
            this.certData = outputStream.toByteArray();
            certStream.read(this.certData);
            certStream.close();
        }
    
    展开全文
  • 使用字节数组输出流对象 “ByteArrayOutputStream” 进行输出,并调用ByteArrayOutputStream的toByteArray()方法获得返回参数的就是字节数组了,下面例子就是转换的方法:   public static byte[] readStream...

                  使用字节数组输出流对象 “ByteArrayOutputStream” 进行输出,并调用ByteArrayOutputStream的toByteArray()方法获得返回参数的就是字节数组了,下面例子就是转换的方法:

     

    public static byte[] readStream(InputStream is) throws Exception{
    		byte[] bytes = new byte[1024];
    		int leng;
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		while((leng=is.read(bytes)) != -1){
    			baos.write(bytes, 0, leng);
    		}
    		return baos.toByteArray();
    	}


    字节数组转换成字符串:

    String mString = new String(byte);//假设为上面的字节数组


     

    展开全文
  • Java中将inputstream输入流转换成byte[]字节数组 Java中的I/O机制都是基于数据流进行输入和输出的,将流转换成字节数组保存下来是数据流传输必不可少的一部分。转换的代码如下(在具体场景下需要处理流的关闭问题)...
  • //将输入流转换成字节数组 private static byte[] readInStream(InputStream is) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buf = new byte[1024];
  • 2) 将输入流转换为字节数组  private byte[] InputStreamToByte(InputStream is) throws IOException {   ByteArrayOutputStream bytestream = new ByteArrayOutputStream();   int ch;   while ...
  • 此方法接受字节数组,并将输入流的内容读取到给定的字节数组。示例importjava.io.BufferedInputStream;importjava.io.IOException;importjava.io.InputStream;publicclassStreamToByteArray{publicstaticvoid...
  • 输入流转字节数组的原理1、读取输入流,每一小段 读一次,取出 byteArray 。2、将该一小段byteArray写入到字节输出流ByteOutStream。直到不能从输入流再读出字节为止。3、将字节输出流转成字节数组。源码: ...
  • ●原先没有缓冲流的情况:通过FileInputStream(文件输入流)和FileOutputStream(文件输出流)可知,在文件拷贝的时候,其文件数据的流转顺序为: 文件→FileInputStream→字节数组→FileOutputStream→文件Copy...
  • 字节流 字节输出流-InputStream-...字节输入流-OutputStream-抽象类 -子类-文件字节输出流(将字节流转换为存放在文件中) -字节数组输出流(将字节流转换为字节数组) BufferedOutputStream-过滤流对流数据进行
  • day16

    2018-08-30 22:52:25
    day 16 一.节点流 节点流: 字节数组流--节点流 输入流:ByteArrayInputStream 没有新增方法---使用和... byte[] toByteArray() 字节数组流转字节数组  字节数组流--节点流  输入流:ByteArrayInput...
  • IO输入和输出,硬盘之间的数据交换 1、文件读写流程 ①创建文件的容器 ②判断方向 合适的类 创建和文件之间的通道 ③ 调用对应的方法 ④ 查看 ⑤关闭 2、字节流 优点:相比于字符流来说传输快 缺点:因为大多数文件...
  • IO流--05--转换流

    2021-02-14 17:25:59
    InputStreamReader:将一个字节的输入流转换为字符的输入流 解码 OutputStreamWriter:将一个字符的输出流转换为字节的输出流 编码 作用:提供字节流与字符流之间的转换 解码:字节、字节数组 —>字符数组...
  • InputStreamReader:将一个字节的输入流转换为字符的输入流 解码:字节、字节数组 —>字符数组、字符串 OutputStreamWriter:将一个字符的输出流转换为字节的输出流 编码:字符数组、字符串 —> 字节、...
  • InputStreamReader:将一个字节的输入流转换为字符的输入流 解码:字节、字节数组 —>字符数组、字符串 OutputStreamWriter:将一个字符的输出流转换为字节的输出流 编码:字符数组、字符串 —> 字节、字节...
  • InputStreamReader:将一个字节的输入流转换为字节的输入流 OutputStreamReader:将一个字符的输出流转换为字节的输出流 作用:提供字节流与字符流之间的转换 解码:字节、字节数组转换为字符数组、字符串 编码...
  • InputStreamReader:将一个字节的输入流转换为字符的输入流 OutputStreamWriter:将一个字符的输出流转换为字节的输出流 2.作用:提供字节流与字符流之间的转换 3.解码:字节、字节数组 —>字符数组、字符串 编码...
  • InputstreamReader:将一个字 节的输入流转换为字符的输入流 Outputstreamwriter:将一个字符的输出流转换 为字节的输出流 2.作用:提供字书流与字符流之间的转换 3.解码:字节、字节数组—>字符数组、字符串 编码:...
  • 将图片文件流转换成base64字符串

    千次阅读 2015-07-20 15:07:45
    /**  * 将文件流转换成base64字符串  * @param screenshot 文件流  * @return  */  private String file2ImgStr(File screenshot){ ... // 读取图片字节数组  try {  //得到输入流  I
  • Java转换流的代码实现

    2020-08-02 10:24:49
    * InputStreamReader:将一个字节的输入流转换为字符的输入流 * OutputStreamWriter:将一个字符的输出流转换为字节的输出流 * 2、作用:提供字节流与字符流之间的转换 * 3、解码:字节、字节数组--->字符...

空空如也

空空如也

1 2 3 4
收藏数 78
精华内容 31
关键字:

输入流转字节数组