Java后端常用工具类

2020.07.15 02:07:50
7
阅读约3分钟

本文用来记录后端开发过程中常用的方法,囊括各个开发过程,防止再次开发时出现找不到资料的情况 img

输出图片 #

 @PostMapping(value = "getFile")
    @ResponseBody
    public void getFile(@Validated TtemporaryFiles ttemporaryFiles, HttpServletResponse response) throws IOException {

        TtemporaryFiles files = ttemporaryFilesService.getAndValid(ttemporaryFiles);

        response.setHeader("Cache-Control","no-store, no-cache");
        response.setContentType("image/jpeg");
        ServletOutputStream outputStream = response.getOutputStream();
        byte[] fileBlob = files.getFileBlob();

        InputStream buffin = new ByteArrayInputStream(fileBlob);

        BufferedImage img = ImageIO.read(buffin);

        ImageIO.write(img,"jpg",outputStream);
        IOUtils.closeQuietly(outputStream);

    }

获取字节流 #

 private byte[] getByteFromInputStream(InputStream in) {
        byte[] be = null;
        try {
            ByteArrayOutputStream out = new ByteArrayOutputStream(4000);
            byte[] b = new byte[4000];
            int n;
            while ((n = in.read(b)) != -1) {
                out.write(b, 0, n);
            }
            in.close();
            out.close();
            be = out.toByteArray();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return be;
    }

byte转为bufferimage #

InputStream buffin = new ByteArrayInputStream(/*二进制串*/, 
                                              /*起始位置*/, 
                                              /*二进制串长度*/)); 

BufferedImage img = ImageIO.read(buffin); 

快速获取所有bean #

ApplicationContext ctx = SpringApplication.run(Application.class, args);

		System.out.println("Let's inspect the beans provided by Spring Boot:");

		String[] beanNames = ctx.getBeanDefinitionNames();
		Arrays.sort(beanNames);
		for (String beanName : beanNames) {
			System.out.println(beanName);
		}

部署之坑 #

打包时引用的静态模块不需要引入maven插件(巨坑)

参考:https://blog.csdn.net/qq_32106647/article/details/86232204

文件写入 #

java处理文件的类里面,stream结尾都是采用字节流,reader和writer结尾都是采用字符流。两者的区别就是读写的时候一个是按字节读写,一个是按字符。

字符流的底层就是字节流。而字符流主要是读取文本文件内容的,可以一个字符一个字符的读取,也可以一行一行的读取文本文件内容。而字节流读取单位为byte.byte作为计算机存储最基本单位,可以用字节流来读取很多其他格式的文件,比如图片视频等等。基于B/S和C/S的文件传输都可以采用字节流的形式。在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。 (注:除了字符和字节流之外,java还有一种叫对象流。有兴趣可以去查API学习一下。

字节流就是按照字节来进行传输,字符流是按照字符来传输.最基本的是字节流,字符流可以说是对字节流的一个包装流.比如你知道了一个字符是8个字节,那么你让字节流一次传输8个字节,那不就相当于一次传输一个字符,也就是字符流了。

    /**
     * 通过字节流的方式写入信息到文件
     *
     * Step 1.根据文件路径,构建文件对象
     * Step 2.创建字节输出流写出信息到文件
     * Step 3.构造待写出的内容,并转为字节数组
     * Step 4.关闭读取文件的字符输出流
     */
    public static void writeFileByFileOutputStream(String storePath,String outInfo) {

        // 创建写出文件
        File file = new File(storePath);
       if(!file.getParentFile().exists()){
            try{
                file.getParentFile().mkdir();
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        // 初始化字节输出流
        OutputStream outputStream = null;

        // 转成字节数组
        byte[] byteArray = outInfo.getBytes();
        try {
            // 创建输出字节流
            outputStream = new FileOutputStream(file,true);
            outputStream.write(byteArray);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (outputStream != null) {
                try {
                    // 关闭写出流时,注意抓异常
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }

通过字符流的方式写入信息到文件

/**
     * 通过字符流的方式写入信息到文件
     *
     * Step 1.根据文件路径,构建文件对象
     * Step 2.创建字符输出流写出信息到文件
     * Step 3.构造待写出的内容,并转为字符数组
     * Step 4.关闭读取文件的字符输出流
     */
    public static void writeFileByFileWriter(String storePath,String strInfo){

        // 创建写出文件
        File file = new File(storePath);
        if(!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        // 初始化字符输出流
        Writer fileWriter = null;

        try {
            // 创建输出字符流
            fileWriter = new FileWriter(file,true);
            // 写出内容
            fileWriter.write(strInfo);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(fileWriter != null){
                try {
                    // 关闭写出流时,注意抓异常
                    fileWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    }
阅读:7 . 字数:779 发布于 1 个月前
本作品系 原创 , 采用 《署名-非商业性使用-禁止演绎 4.0 国际》许可协议
推荐阅读
资源
  • 创意设计
  • 书栈网
  • 帮助中心
  • 声望与权限
  • 服务中心
  • 合作
  • 关于我
  • 广告投放
  • 职位发布
  • 联系我们
  • 关注
  • 技术日志
  • 运营日志
  • ❤ 609 天
  • 条款
  • 服务条款
  • 隐私政策
  • 下载 App
  • Copyright © 2018-2020 Siques