通过举例了解java中的流
Java流结构介绍:
Java所有的流类位于java.io包中,都分别继承字以下四种抽象流类型。
| 字节流 | 字符流 | |
| 输入流 | InputStream | Reader |
| 输出流 | OutputStream | Writer |
1.继承自InputStream/OutputStream的流都是用于向程序中输入/输出数据,且数据的单位都是字节(byte=8bit),如图,深色的为节点流,浅色的为处理流。

2.继承自Reader/Writer的流都是用于向程序中输入/输出数据,且数据的单位都是字符(2byte=16bit),如图,深色的为节点流,浅色的为处理流。


Java流对文件的读取代码演示
1.java的输出流---字节流

代码展示:
public class Ioshow {
public static void main(String[] args) {
new Ioshow().outStreamMethod();
}
public void outStreamMethod(){
try {
//创建输出字节流 并指定输出的文件地址
OutputStream os = new FileOutputStream("F:/iotest/outio.txt");
//要输入文件的字段
String ostr = "写入到文件中";
//调用输出流的write方法输出到指定文件中
os.write(ostr.getBytes());
System.out.println("执行完毕");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:

2.Java的输入流---字节流

代码展示
public class Ioshow {
public static void main(String[] args) {
// new Ioshow().outStreamMethod();
new Ioshow().inputStreamMethod();
}
public void inputStreamMethod(){
try {
//创建输入字节流 并指定要读取的文件地址
InputStream is = new FileInputStream("F:/iotest/inputio.txt");
//声明一个字节流对象
byte cont[]=new byte[1024];
//将文件中的内容读取到字节数组中
is.read(cont);
//打印出读取的内容
System.err.println(new String(cont));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果

3.java输入流----字符流

代码展示
public void fileinput(){
try {
File file = new File("F:/iotest/inchartio.txt");
//创建输入流 并指定读取文件位置
InputStream reader = new FileInputStream(file);
//创建字符输入流 并传入输流对象 并指定输入流的读取编码
InputStreamReader is = new InputStreamReader(reader, "UTF-8");
char chat[] = new char[1000];
//将文件中的内容读取到 chart[]中
is.read(chat);
for (char c : chat) {
System.out.print(c);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
运行结果

4.java输出流-----字符流
实现将inchartio.txt文件的内容读取到outchartio.txt中

代码展示
public class Ioshow {
public static void main(String[] args) {
// new Ioshow().outStreamMethod();
// new Ioshow().inputStreamMethod();
new Ioshow().fileinput();
}
public void fileinput(){
try {
System.out.println("====start read====");
File file = new File("F:/iotest/inchartio.txt");
//创建输入流 并指定读取文件位置
InputStream reader = new FileInputStream(file);
//创建字符输入流 并传入输流对象 并指定输入流的读取编码
InputStreamReader is = new InputStreamReader(reader, "UTF-8");
char chat[] = new char[1000];
//将文件中的内容读取到 chart[]中
is.read(chat);
System.out.print(chat);
//声明一个输出的文件
File outfile = new File("F:/iotest/outchartio.txt");
System.out.println(outfile.exists());
if (outfile.exists()==false) {//文件若不存在
System.out.println("没有该文件夹 创建了一个");
outfile.createNewFile();//创建文件
}
//创建输出流
OutputStream os = new FileOutputStream(outfile);
//创建字符流 并传入输出流 指定字符编码
OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");
//将读取到的内容写到文件中
osw.write(chat);
//清空输出流
osw.flush();
System.out.println("===the end====");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果


Java流对图片的读取和写入
代码展示:
public class Ioshow {
public static void main(String[] args) {
new Ioshow().imginput();
}
public void imginput(){
InputStream is = null;
DataInputStream dis = null;
OutputStream os =null;
DataOutputStream dos =null;
try {
is = new FileInputStream("F:/iotest/帅气猴.jpg");
dis = new DataInputStream(is);
os = new FileOutputStream("F:/iotest/输出猴.jpg");
dos = new DataOutputStream(os);
int img ;
while ((img = dis.read())!=-1) {
dos.write(img);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
dos.close();
os.close();
dis.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
运行结果

通过举例了解java中的流的更多相关文章
- 理解Java中字符流与字节流的区别
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- Java中IO流的总结
有关Java中IO流总结图 流分类 按方向分 输入流 输出流 按单位分 字节流 字符流 按功能分 节点流 处理流(过滤流) 其他 所有的流继承与这四类流:InputSteam.OutputStream ...
- java中有关流操作的类和接口
一.java操作l流有关的类和接口 1.File 文件类 2.RandomAccessFile 随机存储文件类 3.InputStream 字节输入流 4.OutputStream 字节输出流 5.R ...
- 理解Java中字符流与字节流
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个"流动的方向",通常可 ...
- 理解Java中字符流与字节流的区别(转)
1. 什么是流 Java中的流是对字节序列的抽象,我们可以想象有一个水管,只不过现在流动在水管中的不再是水,而是字节序列.和水流一样,Java中的流也具有一个“流动的方向”,通常可以从中读入一个字节序 ...
- Java中对象流使用的一个注意事项
再写jsp的实验作业的时候,需要用到java中对象流,但是碰到了之前没有遇到过的情况,改bug改到崩溃!!记录下来供大家分享 如果要用对象流去读取一个文件,一定要先判断这个文件的内容是否为空,如果为空 ...
- java 中 IO 流分为几种?(未完成)
java 中 IO 流分为几种?(未完成)
- JAVA中IO流总结
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/42119261 我想你对JAVA的IO流有所了解,平时使用的 ...
- Java中IO流中的装饰设计模式(BufferReader的原理)
本文粗略的介绍下JavaIO的整体框架,重在解释BufferReader/BufferWriter的演变过程和原理(对应的设计模式) 一.JavaIO的简介 流按操作数据分为两种:字节流与字符流. 流 ...
随机推荐
- PAT Basic 1074 宇宙无敌加法器 (20 分)
地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”.每个 PAT 星人都必须熟记各位数字的进制 ...
- 深度解析Word2vec
Word2vec 本质上是一种降维操作--把词语从 one-hot encoder 形式的表示降维到 Word2vec 形式的表示,即Distributed Representation.也就是,通过 ...
- P1396 营救[最短路+二分]
题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪盈眶,开起了门…… 妈妈下班回家,街坊邻居说小明被一群陌生人强行押上了警车!妈妈丰富的经验告诉她小 ...
- Selenium(九)测试用例数据分离与从文件导入数据
一.测试用例数据与代码分离 1.从之前的脚本来看,我还是把数据写在了脚本中,这样脚本的通用性很差.全局的数据其实可以从数据库.文本文件.Excel中直接读取. 2.代码和用户数据分离: 3.数据设计- ...
- SEERC 2018 B. Broken Watch (CDQ分治)
题目链接:http://codeforces.com/gym/101964/problem/B 题意:q 种操作,①在(x,y)处加一个点,②加一个矩阵{(x1,y1),(x2,y2)},问每次操作后 ...
- BZOJ 2127 / Luogu P1646 [国家集训队]happiness (最小割)
题面 BZOJ传送门 Luogu传送门 分析 这道题又出现了二元关系,于是我们只需要解方程确定怎么连边就行了 假设跟SSS分在一块是选文科,跟TTT分在一块是选理科,先加上所有的收益,再来考虑如何让需 ...
- Educational Codeforces Round 74 (Rated for Div. 2) D. AB-string
链接: https://codeforces.com/contest/1238/problem/D 题意: The string t1t2-tk is good if each letter of t ...
- sizeof +数组名
链接:https://www.nowcoder.com/questionTerminal/daa5422cb468473c9e6e75cc98b771de 来源:牛客网 sizeof一个数组名称的时候 ...
- (WA)BZOJ 1503: [NOI2004]郁闷的出纳员
二次联通门 : BZOJ 1503: [NOI2004]郁闷的出纳员 /* BZOJ 1503: [NOI2004]郁闷的出纳员 考虑这样一个事实 无论是加或减 都是针对全体人员的 那么只需要记录一个 ...
- Vue(一)
什么是Vue? 用于构建用户界面的渐进式框架