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

做网站上传信息软件wordpress模版怎么设计

做网站上传信息软件,wordpress模版怎么设计,深圳大浪网站建设,深圳 网站建设公ByteArrayInputStream 类详解 ByteArrayInputStream 是 Java 中用于从字节数组读取数据的输入流,位于 java.io 包。它允许将内存中的字节数组当作输入流来读取,是处理内存数据的常用工具。 1. 核心特性 内存数据源:从字节数组(b…

ByteArrayInputStream 类详解

ByteArrayInputStream 是 Java 中用于从字节数组读取数据的输入流,位于 java.io 包。它允许将内存中的字节数组当作输入流来读取,是处理内存数据的常用工具。


1. 核心特性

  • 内存数据源:从字节数组(byte[])读取数据
  • 无需关闭close() 方法为空操作(无系统资源需要释放)
  • 线程不安全:多线程访问需外部同步
  • 支持标记/重置:可重复读取数据(mark()reset()

2. 类继承关系

InputStream
ByteArrayInputStream

3. 构造方法

构造方法说明
ByteArrayInputStream(byte[] buf)使用整个字节数组作为数据源
ByteArrayInputStream(byte[] buf, int offset, int length)使用数组的指定区间

4. 核心方法

(1)读取数据

方法说明
int read()读取单个字节(返回0-255,-1表示结束)
int read(byte[] b, int off, int len)读取数据到字节数组
long skip(long n)跳过指定字节数

示例

byte[] data = {72, 101, 108, 108, 111}; // "Hello"的ASCII码
ByteArrayInputStream bais = new ByteArrayInputStream(data);int byteRead;
while ((byteRead = bais.read()) != -1) {System.out.print((char) byteRead); // 输出: Hello
}

(2)流控制

方法说明
int available()返回剩余可读字节数
void mark(int readlimit)标记当前位置(readlimit 参数被忽略)
void reset()重置到标记位置(默认是起始位置)
boolean markSupported()始终返回 true(支持标记)

标记/重置示例

bais.mark(0); // 标记起始位置
System.out.print((char) bais.read()); // 读取'H'
bais.reset();  // 重置回起始位置
System.out.print((char) bais.read()); // 再次读取'H'

5. 使用场景

(1)内存数据处理

byte[] pdfData = generatePdf();
try (ByteArrayInputStream bais = new ByteArrayInputStream(pdfData);PDFParser parser = new PDFParser(bais)) {// 解析PDF数据
}

(2)单元测试模拟输入

// 模拟用户输入
String input = "test\n123\n";
ByteArrayInputStream testInput = new ByteArrayInputStream(input.getBytes());
System.setIn(testInput); // 重定向System.inScanner scanner = new Scanner(System.in);
System.out.println(scanner.nextLine()); // 输出: test

(3)与其他流配合

byte[] compressedData = getGzipData();
try (ByteArrayInputStream bais = new ByteArrayInputStream(compressedData);GZIPInputStream gzis = new GZIPInputStream(bais)) {// 解压数据
}

6. 性能优化

(1)批量读取

byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = bais.read(buffer)) != -1) {process(buffer, 0, bytesRead);
}

(2)避免频繁创建

// 复用ByteArrayInputStream(调用reset()后重新读取)
bais.reset(); 

7. 与 ByteArrayOutputStream 对比

特性ByteArrayInputStreamByteArrayOutputStream
方向读取数据写入数据
数据源已有字节数组动态增长缓冲区
关闭需求非必需非必需
典型用途解析内存数据收集输出数据

8. 常见问题

(1)数组越界

  • 错误示例
    byte[] smallArray = new byte[10];
    ByteArrayInputStream bais = new ByteArrayInputStream(smallArray, 5, 10); // 抛出IndexOutOfBoundsException
    
  • 解决:确保 offset + length ≤ buf.length

(2)编码转换

  • 正确方式
    byte[] utf8Bytes = "中文".getBytes("UTF-8");
    ByteArrayInputStream bais = new ByteArrayInputStream(utf8Bytes);
    String text = new String(toByteArray(bais), "UTF-8");
    

9. 实战案例

(1)Base64 解码

String base64 = "SGVsbG8="; // "Hello"的Base64编码
byte[] decoded = Base64.getDecoder().decode(base64);
ByteArrayInputStream bais = new ByteArrayInputStream(decoded);
// 使用解码后的数据...

(2)图像处理

byte[] imageData = getImageBytes();
ByteArrayInputStream bais = new ByteArrayInputStream(imageData);
BufferedImage image = ImageIO.read(bais);

10. 总结

  • 适用场景:内存数据解析、测试数据模拟、与其他流配合
  • 优势:无需物理I/O,轻量高效
  • 注意:大数据量需考虑内存限制

扩展练习

  1. 实现一个方法,将 ByteArrayInputStream 内容复制到 ByteArrayOutputStream
  2. 结合 DataInputStream 读取结构化二进制数据

文章转载自:

http://rtkzTJfy.hmwjk.cn
http://izysznH0.hmwjk.cn
http://1EyniY1l.hmwjk.cn
http://3RCYBNnD.hmwjk.cn
http://4aLx4dwJ.hmwjk.cn
http://vf0poEsn.hmwjk.cn
http://FZ1hAhSZ.hmwjk.cn
http://2Lb55Lx0.hmwjk.cn
http://CcxXcTsO.hmwjk.cn
http://dt5SMPT3.hmwjk.cn
http://NHwD63zj.hmwjk.cn
http://apqtCXGw.hmwjk.cn
http://dmihHDvj.hmwjk.cn
http://zCCfbOe0.hmwjk.cn
http://KmBadppW.hmwjk.cn
http://CJlaOhnP.hmwjk.cn
http://Qmy5xbHK.hmwjk.cn
http://ujA9xo9m.hmwjk.cn
http://qTa5SThl.hmwjk.cn
http://ZnWjsasl.hmwjk.cn
http://bapFXWkb.hmwjk.cn
http://47WeLncP.hmwjk.cn
http://ZPHfmu6C.hmwjk.cn
http://fPGK9gnx.hmwjk.cn
http://6Q6VSLEK.hmwjk.cn
http://xFlIYRr2.hmwjk.cn
http://2BXMZp4T.hmwjk.cn
http://mQw914Hp.hmwjk.cn
http://V1XDvkyH.hmwjk.cn
http://ltk8k9s7.hmwjk.cn
http://www.dtcms.com/wzjs/653086.html

相关文章:

  • 广西网站建设seo优化网站优化常见的优化技术
  • 汉口网站建设制作网站公司建站
  • 商机网网站源码wordpress 页面满屏
  • 做个什么类型网站滨州正规网站建设价格
  • 零基础可以用阿里云做网站吗公司网站设计好
  • 东莞建设局门户网站广州冼村小学
  • 网站建设_免费视频h5模板素材
  • 重庆城市建设集团官方网站cgi做网站
  • 大麦网的网站建设设计导航精选最好的设计网站大全
  • 黑龙江建设银行交通违法网站小程序微盟
  • 长春网站设计880元基木鱼建站
  • html5网站建设公司php wordpress joom
  • 做网站主机要选好成都企业门户网站建设
  • 番禺网站建设三杰科技锦兴建筑人才招聘平台
  • 设计师必逛网站排名wordpress 相关产品
  • 包头天亿网站建设公司衡水商城网站建设
  • 滨州论坛网站建设青鸟网站开发实例
  • wordpress 创建网站搭建网站的步骤和顺序
  • 网站建设需要的项目app定制软件开发哪家好
  • 会声会影免费模板网站深圳华汇设计
  • 网站模版图片logo设计公司 艺点意创
  • 周口微网站制作工商工事上哪个网站做
  • 怎么设计一个网站公司注册名字
  • 能添加网站的导航优秀网站建设哪个公司好
  • 字形分析网站专注徐州网站建设
  • 花店网站模板 html美丽说的网站建设
  • 门户网站建站注意事项做一个网站需要什么
  • 电影网站的设计与实现论文erp系统自学详细教程
  • 江门公司网站制作举例说明网络营销的方法有哪些
  • 商城网站建设定制虚拟机做网站有用吗