通过举例了解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的简介 流按操作数据分为两种:字节流与字符流. 流 ...
随机推荐
- How to resolve emulator cannot be launched issue by command line
Issue: Resolution: 1. Open the system variables, find the Path and edit it, add below item : C:\User ...
- Sonya and Exhibition
http://codeforces.com/group/1EzrFFyOc0/contest/1004/problem/B #include<iostream> #include<c ...
- Java基础 FileInputStream/ FileOutputStream / 字节输入流 字节输出流实现文件的复制
FileInputStream/FileOutputStream的笔记: /**(FileInputStream/FileOutputStream四个步骤: ①声明②加载地址③read/write④c ...
- JS export 异步导出
function getUrl () { req().then(res => { console.log(res); }).catch(err => { console.log(err); ...
- 二、vue基础--计算属性和监听器
1.一些操作需要计算后才能得到的用计算属性,需要放在computed属性中代码如下: <div id='app'> <div> <label>宽:</labe ...
- PL/SQL老是自动断开问题处理
问题背景:情况是这样的,很多开发同事的plsql上班时间开着8个小时,有时候他们出去抽烟后或者中午吃完饭,回来在plsql上面执行就报错无响应,然后卡住了半天动弹不了,非得重新登录plsql才生效,我 ...
- GEF中TreeViewer的叶子节点展开
/** * GEF树叶子节点的展开 * @param items */ private void expand(TreeItem[] items) { for (int i = 0; i < i ...
- UPS电源运用在数据中心,有什么优势?
UPS电源是每个数据中心为了保证服务器与计算设备不被电力线干扰与电能质量问题所影响的设备. 1.电源选择 运用在线式或是后备式UPS电源,均需依照微机设备的需求与经济条件所决定.若是经济条件相对较好, ...
- P2993 [FJOI2014]最短路径树问题
思路:最短路+点分治 提交:2次 错因:更新桶的时候没有重置,而直接加上了. 题解: 对于构建最短路树,我们可以先跑最短路,然后dfs一遍连边. 然后就是点分治了,还是一些桶,存点数为\(x\)的最长 ...
- word图片上传到服务器
参考:http://blog.ncmem.com/wordpress/2019/08/07/word%e5%9b%be%e7%89%87%e4%b8%8a%e4%bc%a0%e5%88%b0%e6%9 ...