当前位置: 首页 > article >正文

文件操作:使用ByteArrayInputStream

问题:
使用InputStream读取->InputStream.read
内部的指针位置就改变了,后面再读取时缺少文件头信息,不能正常使用。

解决:
让指针再到开始位置就行了
使用 BufferedInputStream 的API:ByteArrayInputStream.reset

1 判断文件类型

public static String getFileType(ByteArrayInputStream inputStream) {
        String type = "";

        inputStream.mark(inputStream.available() + 1);
        byte[] bytes = new byte[4];
        inputStream.read(bytes, 0, 4);
        if (bytes[0] == (byte) 0x3C && bytes[1] == (byte) 0x3F && bytes[2] == (byte) 0x78 && bytes[3] == (byte) 0x6D) {
            type = "XML";
        }else{
            type = "UNKNOW";
        }

        inputStream.reset();

        return type;

    }

2 File转为ByteArrayInputStream

File file = new File("C:\\Users\\17240\\Downloads\\3.xml");
FileInputStream fileInputStream = new FileInputStream(file);
byte[] fileContent = new byte[(int) file.length()];
fileInputStream.read(fileContent);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(fileContent);
            

http://www.kler.cn/a/381047.html

相关文章:

  • CodeQL学习笔记(5)-CodeQL for Java(AST、元数据、调用图)
  • C++进阶:unordered_map和unordered_set的使用
  • Python网络爬虫:入门与实战
  • React第十三章(useTransition)
  • C#如何封装将函数封装为接口dll?
  • 基于 Canal + Elasticsearch 的业务操作日志解决方案
  • A010-基于SpringBoot的宠物健康咨询系统的设计与实现
  • 【LeetCode】【算法】739. 每日温度
  • Harmony项目基础
  • 基于 RNN 的语言模型
  • windows 文件监控 c++ 11及以上版本可用
  • 接口测试(十一)jmeter——断言
  • 力扣最热一百题——验证二叉搜索树
  • 计算机存储单元bit。不同编程语言类型差异。
  • Python面向对象:类和对象的基本操作
  • 在gitlab,把新分支替换成master分支
  • LeetCode 3165.不包含相邻元素的子序列的最大和:单点修改的线段树(动态规划)
  • easyui +vue v-slot 注意事项
  • Grafana+Prometheus监控篇-Nginx
  • C#中,Thread和Task的区别
  • 人工智能基础-opencv-图像处理篇
  • 第二届新生程序设计竞赛热身赛(C语言)
  • File和InputStream,OutputStream
  • JavaEE初阶---网络原理值TCP篇(三)
  • gradle下载的jar包,源码出现Decompiled .class file, bytecode version
  • nginx监控指标有哪些