java IO操作,看完你应该就清晰了。
前言:
java中IO里的一些知识对于一个java新手来说,是比较难理解的。因为里面存在一些很绕的概念,比如:
1.到底是读入写出,还是读出写入;
2.我要将一个文件的内容拷贝到另一个文件是先用InputStream还是OutputStream;
3.什么时候用FileInputStream,什么时候用ByteArrayInputStream,什么时候又用StreamBufferInputStream;
要印象深刻的解决这些问题,还是那句话,得从理解出发。
正题:
对于IO的基础知识模型,分类,及各个类的特性相信有很多的帖子说的很详细了,本文就不再赘述了。
首先我们阐述一个聊天的概念,举个例子,假如你现在在跟小明聊天,小明在给你倾述他失恋了有多么多么难受,是不是他心里有一堆话然后通过嘴巴表达出来。然后你在认真的聆听并且感受他的难受,是不是通过耳朵接收然后放到心里去感受。
好了,我们把这个场景放到程序里面如下图:

(请先放弃你们的审美,这样你才能认出耳朵和嘴巴)
这里有四个节点,每个节点都有自己的职责,首先如果小明的嘴巴要表达他心里的难受需要去读取心里的内容,我们知道读取我们都用read()方法。InputStream才有read()方法,所以这时我们肯定是用InputStream。当你的耳朵接收到小明表达的内容后,需要写到你的心里去,这是我们要用到write()方法,可想而知是用OutputStream。
到这里我们回到上面的问题,其实是一个读出写入的过程,然后我们把两个心看成两个file,那么要把小明的内容copy到你的心里就分以下步骤:
1.创建小明心的FileInputStream,然后调用它的read()方法,把读到的内容放到Byte[]中。
2.创建你心的FileOutputStream,然后调用write()方法,把上一步Byte[]中的内容写到你心里去。
以下测试场景可以对照测试:
创建两个文件xiaoming's-heart.txt和your-heart.txt并且在xiaoming's-heart.txt中输入内容

然后执行以下码
public static void main(String[] args){
File xiaomingFile = new File("E:/testFile/xiaoming's-heart.txt");
File yourFile = new File("E:/testFile/your-heart.txt");
try {
InputStream is = new FileInputStream(xiaomingFile);
OutputStream os = new FileOutputStream(yourFile);
byte[] buffer = new byte[4096];
int readLen = 0;
while ((readLen = is.read(buffer, 0, 4096)) >= 0) {
System.out.print((char)readLen);
os.write(buffer, 0, readLen);
os.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
结果

我们可以看到,xiaoming's-heart.txt文件中的内容已经copy到your-heart.txt,这是一个很简单的例子,知识方便大家理解上面的理论场景
至于什么时候该用什么流其实只需要根据不同源和目的地选择即可。
总结:
本文只是帮助一些深陷其中的朋友简单理解一下java的io操作,希望简单的场景能让大家有一个清晰的理解。涉及的内容很少。其他io相关知识可以通过其他网络资料获取。
java IO操作,看完你应该就清晰了。的更多相关文章
- Java基础?看完以后再也不惧怕面试了
前言 这篇文章主要是Java基础部分,主要分为3个部分:Java集合.Java多线.JVM:这些东西帮助我面试成功率提升了很多.后面还有中间件Spring.Redis.RocketMQ等等吧,祝愿大家 ...
- JAVA—IO操作
一.JAVA I/O 输入输出流 1:编码问题 2:File类的使用 3:RandomAccessFile的使用 4:字节流的使用 5:字符流的使用 6:对象的序列化和反序列化 2: file类的使用 ...
- java IO操作:FileInputStream,FileOutputStream,FileReader,FileWriter实例
FileInputStream <span style="font-family:Verdana;">import java.io.File; import java. ...
- Java IO操作——数据操作流DataOutputStream和DataInputStream的使用
学习目标 掌握DataOutputStream和DataInputStream的作用 可以使用DataOutputStream和DataInputStream写入和读入数据 数据操作流 在io包中, ...
- Java IO操作:合并流
合并流:把两个文件合并在一起. 主要操作的是内容. 定义: public class SequenceInputStreamextends InputStream 方法摘要: 操作步骤: 1,分别建立 ...
- JAVA IO操作:数据操作流:DataOutputStream和DataInputStream
掌握DataOutputStream和DataInputStream的作用. 可以使用DataOutputStream和DataInputStream写入和读取数据. 在IO包中提供了两个与平台无关的 ...
- java IO操作和计算操作:工作内存和主内存 volatile关键字作用;原子操作对象AtomicInteger ....
应该停止但无法停止的计算线程 如下线程示例,线程实例中while循环中的条件,在主线程中通过调用实例方法更新后,while循环并没有更新判断变量是否还成立.而是陷入了while(true)死循环. i ...
- Java IO操作
转自:http://www.cnblogs.com/jyan/articles/2505791.html Johnny Yan的博客 1 InputStream类型 InputStream的作用是标志 ...
- 每天进步一点点-Java IO操作-Java Serializable(对象序列化)的理解和总结
往硬盘文件里写数据 序列化:序列化是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.在另一端,反序列化将从该流重 ...
随机推荐
- nacos Failed to obtain JDBC Connection 连接异常
在conf/目录下,将application.properties.example 改名为bootstrap.properties 将连接数据库信息添加到末尾 # db mysql spring.da ...
- 类加载机制+JVM调优实战+代码优化
类加载机制 Java源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行.虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直 ...
- SaltStack 水平权限绕过漏洞(CVE-2020-11651)
影响版本 SaltStack < 2019.2.4 SaltStack < 3000.2 poc git clone https://github.com/jasperla/CVE-202 ...
- cmd MySQL登录
mysql -uroot -p >Mysql -P 3306 -h 0.0.0.0 -u root -p 可远程访问
- Python小白的数学建模课-10.微分方程边值问题
小白往往听到微分方程就觉得害怕,其实数学建模中的微分方程模型不仅没那么复杂,而且很容易写出高水平的数模论文. 本文介绍微分方程模型边值问题的建模与求解,不涉及算法推导和编程,只探讨如何使用 Pytho ...
- web笔记随笔
1.Web服务组件 8.第三方内容:广告统计.mockup 7.Web前端框架: HTML5. jQuery. Bootstrap 6.Web应用: CMS. BBS. Blog 5.Web开发框架: ...
- selenium元素定位之 动态id, class元素定位
1.直接进入正题 如下图, 有些元素每次进入都会刷新, 造成元素无法重复定位 怎么办? "xpath部分属性值"定位方法可以帮到我们 1.包含属性定位 driver.find_el ...
- 为什么不建议使用WordPress呢?
程序过于注重扩展性与动态配置解析,导致执行流程中包含大量的钩子.判断.文件加载等操作,导致执行效率偏低,对服务器要求较高.对系统的开销,尤其是CPU等部分消耗较大,据观察,单个请求在腾讯云s1主机单核 ...
- RocketMQ原理分析&场景问题
硬核干货分享,欢迎关注[Java补习课]成长的路上,我们一起前行 ! <高可用系列文章> 已收录在专栏,欢迎关注! 一.RocketMQ的基本原理 RocketMQ基本架构图如下 从这个架 ...
- Python包安装过程
以下是paramiko-1.7.7.1的安装过程,可以看到整个过程分为步,第一步是build,就是拷贝源文件到build文件夹里, F:\VMFiles\tmpFiles\paramiko-1.7.7 ...