io流 和 自定义输入输出流
说起io流最常用的地方就是文件操作,例如从一个文件中读取内容,或者把内容输入到文件中,这些都是io流的基本操作。其实流在编程语言中是一个抽象概念,流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。它的特性是进行数据传输。所以io流不仅仅用于文件内容的传输。
接下来演示一下自定义输入输出流并利用流的概念复制一个字符串,将字符串s中的内容流向s2。
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Test {
public static void main(String[] args) throws IOException {
String s="123456";
StringBuilder s2=new StringBuilder();
BufferedInputStream bis=new BufferedInputStream(new MyInputStream(s));
BufferedOutputStream bos=new BufferedOutputStream(new MyOutputStream(s2));
byte[] bytes=new byte[1024];
int length;
while((length=bis.read(bytes))!=-1) {
bos.write(bytes,0,length);
}
bos.flush();
bos.close();
bis.close();
System.out.println(s2);
}
}
class MyOutputStream extends OutputStream{
private StringBuilder bs;
public MyOutputStream(final StringBuilder b) {
this.bs=b;
}
@Override
public void write(int b) throws IOException {
// TODO Auto-generated method stub
bs.append((char)b);
}
}
class MyInputStream extends InputStream{
private String s=null;
private int location=0;
private int length;
public MyInputStream(final String s) {
this.s=s;
length=s.length();
}
@Override
public int read() throws IOException {
// TODO Auto-generated method stub
if(location>=length) {
return -1;
}
return s.charAt(location++);
}
}
这样s2中的内容就是123456
评论区
请写下您的评论...
猜你喜欢
blog
java io基础总结
java基础
2917
IO是什么?其实就是Java中的一种输入和输出功能,也可以理解为对文件的写入和读出的操作,只不过Java中对这种操作叫做对流的操作。而流不只是对文件进行读写,还可以对内存,网络,程度操作。根据数据的
java springboot
1726
涉及知识点:java动态编译,java反射,io流,java文件操作,输入输出重定向,多线程与线程安全,mysql数据库设计等,理解起来难度较高。下面是我自己设计的几个问题,和一些测试数据。排序问题
框架,springboot
1007
springboot用自带的logback打印日志多环境打印生产环境输出到控制台和文件,一天一个文件,保留30天开发环境输出到控制台
二、logback-spring.xml配置文件详情?xmlversion="1.
blog
springmvc执行流程分析
spring/springmvc
4241
1.springmvc执行流程图:2.执行流程分析1.一个url请求该站点的前端控制器DispatcherServlet。2.随后DispatcherServlet调用HandlerMapping
blog
java字节码指令的工作流程
java虚拟机(jvm)
4405
字节代码指令字节代码指令由一个标识该指令的操作码和固定数目的参数组成:操作码是一个无符号字节值——即字节代码名,由助记符号标识。例如,操作码0用助记符号NOP表示,对应于不做任何操作的指令。参数是静
框架
2022
一般分页查询的接口都需要传入page(当前第几页),limit(限制行数)两个参数。如果框架本身没有做处理的话我们需要自己在控制层写参数去接收和处理这俩参数。如何配置基础框架,让其自动接收和处理这些
ofc
vue使用插件和自定义插件
weblog
2523
自定义一个插件.js(function(){ //需要向外暴露的插件对象 constMyPlugin={}; MyPlugin.install=function(Vue,options){ //1
blog
mqtt 协议的概念和理解
mqtt协议
1589
传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。这就是为什么在介绍里说它非常适合”在物联网领域,传感器与服务器的通信,信息的收集”,要知道嵌入式设备的运算能力和带宽都相对薄弱
最新发表
归档
2018-11
12
2018-12
33
2019-01
28
2019-02
28
2019-03
32
2019-04
27
2019-05
33
2019-06
6
2019-07
12
2019-08
12
2019-09
21
2019-10
8
2019-11
15
2019-12
25
2020-01
9
2020-02
5
2020-03
16
2020-04
4
2020-06
1
2020-07
7
2020-08
13
2020-09
9
2020-10
5
2020-12
3
2021-01
1
2021-02
5
2021-03
7
2021-04
4
2021-05
4
2021-06
1
2021-07
7
2021-08
2
2021-09
8
2021-10
9
2021-11
16
2021-12
14
2022-01
7
2022-05
1
2022-08
3
2022-09
2
2022-10
2
2022-12
5
2023-01
3
2023-02
1
2023-03
4
2023-04
2
2023-06
3
2023-07
4
2023-08
1
2023-10
1
2024-02
1
2024-03
1
2024-04
1
2024-08
1
标签
算法基础
linux
前端
c++
数据结构
框架
数据库
计算机基础
储备知识
java基础
ASM
其他
深入理解java虚拟机
nginx
git
消息中间件
搜索
maven
redis
docker
dubbo
vue
导入导出
软件使用
idea插件
协议
无聊的知识
jenkins
springboot
mqtt协议
keepalived
minio
mysql
ensp
网络基础
xxl-job
rabbitmq
haproxy
srs
音视频
webrtc
javascript
加密算法
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。