java IO流_其他流_字节数组流与文件流对接_练习

package IO流_其他流_字节数组流;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.imageio.stream.FileImageInputStream;

/**

  • 字节数组流与文件流对接:

  • 步骤:

  • 1.文件内容不用太大

  • 2.文件内容;字节输入流–借助程序–>写入字节数组 ;字节数组输出流

  • 3.字节数组;字节数组输入流–借助程序–>输出到文件中;文件输出流吧
    */
    public class ByteArrayDemo02 {

    public static void main(String[] args) throws IOException {
    //测试:输入路径
    byte[] data = getBytesFromFile(“e:/xp/test/char.txt”);//处理异常
    //构建
    System.out.println(“文件输入–>字节数组输出”);
    System.out.println(new String(data));
    System.out.println(“字节数组输入–>文件输出”);
    toFileEromByteArray(data,“e:/xp/test/arr.txt”);
    //换成图片测试
    byte[] data1 = getBytesFromFile(“e:/xp/test/tx.jpg”);
    toFileEromByteArray(data1,“e:/xp/test/arr.jpg”);
    System.out.println(“文件格式输出端无法显示”);
    }
    /**
    *1. 文件–>程序–>字节数组

    • @throws IOException
      */
      public static byte[] getBytesFromFile(String srcPath) throws IOException{
      //创建文件源
      File src = new File(srcPath);
      //创建目的地:即字节数组
      byte[] dest = null;
      //选择流
      //文件输入流 ,这里可以使用多态
      InputStream is = new BufferedInputStream(new FileInputStream(src));//处理异常
      //字节数组输出流;注意这里不能使用多态
      ByteArrayOutputStream bos = new ByteArrayOutputStream();

      //操作 :不断读取文件并写出到字节数组流中
      byte[] flush = new byte[1024];//flush刷新;别忘填入数字
      //接收长度
      int len= 0;
      while(-1 !=(len=is.read(flush))){//处理声明异常
      //写出到字节数组流中
      bos.write(flush, 0, len);
      }
      bos.flush();//flush刷新
      //获取数据
      dest = bos.toByteArray();//toByteArray到字节数组

      bos.close();
      is.close();//先进后关

      return dest;
      }
      /**

    • 字节数组输入流–借助程序–>输出到文件中

    • @throws IOException
      */
      public static void toFileEromByteArray(byte[] src,String destPath) throws IOException{
      //创建源及目的地
      File dest = new File(destPath);

      //选择流:
      //字节数组输入流;没有新增方法可以使用多态
      InputStream is = new BufferedInputStream(new ByteArrayInputStream(src));

      //文件输出流
      OutputStream os = new BufferedOutputStream(new FileOutputStream(dest));//处理异常

      //操作 ,不断读取字符数组
      byte[] flush = new byte[1024];//flush刷新;别忘填入数字
      //接收长度
      int len= 0;
      while(-1 !=(len=is.read(flush))){//处理声明异常
      //写出到文件中
      os.write(flush, 0, len);
      }
      os.flush();//flush刷新
      //释放资源
      os.close();
      is.close();

    }
    }
    //结果-------------------------------------------------------------
    文件输入–>字节数组输出
    锄禾日当午, 码农真辛苦.
    一行破代码, 头疼一上午.
    又破解一bug,高兴一下午.
    字节数组输入–>文件输出
    文件格式输出端无法显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值