InputStream.read() 和 OutputStream.write()方法

article/2025/9/21 17:42:29

InputStream.read()OutputStream.write()方法组合使用可以完成文件的复制功能。

先贴出代码

	InputStream inputStream = new FileInputStream(file);OutputStream os = response.getOutputStream();byte[] b = new byte[2048];int size;while ((size = inputStream.read(b)) > 0) {System.out.println(size); //size为2048os.write(b, 0, size);}// 这里主要关闭。os.close();inputStream.close();

参数

b  读取数据的缓冲区。 

运行过程

①先读取文件

inputStream.read(b))

从输入流读取 b (2048)个字节,并将它们存储到缓冲区b

根据byte[] b = new byte[2048]; b的初始化值如下图所示[0,0,0,0,…,0,0,0]
b的初始化值
经过inputStream.read(b)方法后,b会被赋值,如下图所示

b被赋值
②再输出文件

紧接着OutputStream.write()方法可以将字节数组b写入到文件中,

public void write(byte[] b,int off, int len)

元素b[off]是写入的第一个字节, b[off+len-1]是此操作写入的最后一个字节。

这里大家可能会有个疑问,就是用while循环读取的话,为第二次循环的时候就自动read后面的字节了呢?
(参考文章:https://blog.csdn.net/liangruimi/article/details/44856843)

根据我们的代码设置,一个while循环可以读取2048个字节,那么假如文件大小为5000字节,

那么需要循环三次while语句,即可完成文件的读取和写入(也就是复制文件)。

报错

如果b是null ,则抛出NullPointerException 。 如果off为负数,或len为负数,或off+len大于数组b的长度,则抛出IndexOutOfBoundsException 。 

http://chatgpt.dhexx.cn/article/Q8SItJQY.shtml

相关文章

InputStream 、 InputStreamReader和BufferedReader

在Java中,上述三个类经常用于处理数据流,下面介绍一下三个类的不同之处以及各自的用法。 InputStream : 是所有字节输入流的超类,一般使用它的子类:FileInputStream等,它能输出字节流;InputStre…

Java转换流(InputStreamReader/OutputStreamWriter)

文章目录 概述为什么会有转换流?InputStreamReaderOutputStreamWriter 概述 转换流是字节流到字符流的桥梁,在转换的过程中,可以指定编码。转换流也是一种处理流,它提供了字节流和字符流之间的转换。 转换流的两个类 InputStrea…

InputStream read()方法详解

在Java7中,InputStream被定义为一个抽象类,相应的,该类下的read()方法也是一个抽象方法,这也就意味着必须有一个类继承InputStream并且实现这个read方法。   查阅Java7 API,我们可以看到,在InputStream中…

【Java学习笔记】InputStreamReader的理解

一、InputStreamReader类 API文档说明:InputStreamReader类是从字节流到字符流的桥接器:它使用指定的字符集读取字节并将它们解码为字符。 它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。每次调…

InputStreamReader介绍使用

InputStreamReader类: java.io.InputStreamReader extends Reader InputStreamReader:是字节流通向字符流的桥梁:他使用指定的charset读取字节并将其解码为字符。(解码:把看不懂的变为能看懂的) 继承自父类的共性成员方法:int r…

jconsole工具监测jvm

背景 本篇文章为了记录如何使用jconsole工具。 jconsole工具使用环境是windows,监控服务端在linux上。 如何启动jconsole 找到你本地jdk的目录,进入bin目录,找到jconsole.exe程序双击启动即可 本地进程 如果是想调试本地程序的话&#xf…

jconsole远程连接服务器失败,提示“连接失败:是否重试“

操作步骤: 运行程序的时候加上参数: -Djava.rmi.server.hostname****** -Dcom.sun.management.jmxremotetrue -Dcom.sun.management.jmxremote.port9991 -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.jmxremote.sslfalse 服务器打开端口:效果就…

java jconsole 远程连接_jconsole连接远程tomcat

咱们先说怎么做,然后再聊聊一些原理,当然,本人技术能力有限,有错误的地方,欢迎指正。 1.本机环境,远程环境 本机环境:windows 7 java version "1.8.0_121" 远程环境:centos 6.5 java…

jconsole远程连接的使用

背景 在项目做性能压测的时候,对程序进行分析,需要用到jconsole工具,以前都没用过,学习了一下 连接步骤 1. 打开工具 打开jdk安装目录 -> bin ,找到jconsole.exe 双击打开 2. 到服务器中,加入以下…

简单使用Jconsole

引言 本文简单介绍Jconsole,死锁用例测试分析线程 正文 测试用例 DeadLockDemo : public class DeadLockDemo {private static Object resource1 new Object();//资源 1private static Object resource2 new Object();//资源 2public static void…

linux jconsole 监控jvm,JVM监测分析JConsole

一、基本操作 启动界面 1.JConsole是什么 从Java 5开始引入了JConsole。JConsole是一个内置Java性能分析器,可以从命令行或在GUI shell中运行。您可以轻松地使用JConsole(或者,它更高端的“近亲” VisualVM)来监控Java应用程序性能和跟踪Java中的代码。 …

Java应用程序监控之 jconsole

jconsole jconsole 启动一个图形控制台,使您可以监视和管理Java应用程序。JConsole图形用户界面是一个符合Java Management Extensions(JMX)规范的监视工具。JConsole使用Java虚拟机(Java VM)的广泛工具来提供有关Jav…

JConsole远程监控配置

首先,看本机(Windows)安装了JRE没 Win 》 CMD 打开命令窗口 如有安装,则会显示以下版本信息;若没有显示,就安装吧 1 C:\Users\Administrator>java -version 2 java version "1.8.0_111" 3 …

jconsole连接失败:是否重试?

背景 在学习使用jconsole的时候,按照大佬们的教程一步一步操作的,到了连接的时候却一直报这个错误,连接不上远程服务,百度了很久也没有相关的说明,都是让添加那些启动参数,问题是启动参数我早就添加了。。…

JConsole详解

一、JConsole是什么 从Java 5开始 引入了 JConsole。JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行。您可以轻松地使用 JConsole(或者,它更高端的 “近亲” VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码。 二、如何启动JConsole 如…

Jconsole小记

今天在看jmeter相关的文章时,看到了这个,网上查看了一些相关的博客,虽然现在还不做性能方面的,先记录下来以便日后查看。 Jconsole,Java Monitoring and Management Console。 Jconsole是JDK自带的监控工具&#xff…

jconsole使用

目的: 为了检查一个经常会跑死的java程序,在网上查询了下, 觉得jconsole这个工具还不错,所以就部署了一把 一、服务器端部署 首先在服务器端,启动你要监控的java程序,我的启动脚本如下: /ho…

java jconsole_jconsole与jvisualvm

jvisualvm同jconsole都是一个基于图形化界面的、可以查看本地及远程的JAVA GUI监控工具,可以认为jvisualvm是jconsole的升级版,因此这里不再介绍jconsole,只介绍jvisualvm。jvisualvm是一个综合性的分析工具,可以认为其整合了jstack、jmap、jinfo等众多调试工具的功能,并以…

JConsole工具使用

转自:https://www.cnblogs.com/baihuitestsoftware/articles/6405580.html#top Jconsole,Java Monitoring and Management Console。Jconsole是JDK自带的监控工具,在JDK/bin目录下可以找到。它用于连接正在运行的本地或者远程的JVM&#xff…

Jconsole

JConsole有界面,能够比较方便地看到堆内存 \线程\类,以及JMX的变化. 线下环境中算是个不错的诊断工具. 那怎么操作呢? 十分简单, 本地的JDK安装路径中找到 jConsole.exe ,双击,填写远程JVM进程即可. 要注意: JConsole使用时要求远程JVM打开了 JMX 端口, JMX端口和服务端口是…