通过举例了解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的简介 流按操作数据分为两种:字节流与字符流. 流 ...
随机推荐
- Vue 循环 [Vue warn]: Avoid using non-primitive value as key
页面中不添加 :key 索引的时候,会不停的提示虚线,但不影响使用 后来加了一个索引,加成了:key= "content" 从后台取出来的contents是一个list,里面有多 ...
- 推荐排序---Learning to Rank:从 pointwise 和 pairwise 到 listwise,经典模型与优缺点
转载:https://blog.csdn.net/lipengcn/article/details/80373744 Ranking 是信息检索领域的基本问题,也是搜索引擎背后的重要组成模块. 本文将 ...
- Pytest【定制fixture】
在pytest中的fixture是在测试函数运行前后,由pytest执行的外壳函数,fixture中的代码可以定制,满足多变的测试需求:包括定义传入测试中的数据集.配置测试前系统的初始化状态.为批量测 ...
- Java多维数组定义以及常见异常
import java.lang.*; import java.util.*; public class Demo1 { public static void main(String args[]){ ...
- H5:加载原理,慢加载和卡顿原因分析,
前端H5工作原理: 请求和显示原理 H5页面卡顿原因分析: 1.动画太多:渲染重绘占用GPU 2.页面操作导致重绘频繁 3.页面元素复杂:资源类标签太多(图像/视频/dom树太长) 4.内置webvi ...
- Log 日志收集
class Log { private readonly static String DateFormat = "yyyyMMdd"; private readonly stati ...
- std::array,std::vector,基于范围的for循环
std::array除了有传统数组支持随机访问.效率高.存储大小固定等特点外,还支持迭代器访问.获取容量.获得原始指针等高级功能.而且它还不会退化成指针T *给开发人员造成困惑. for( 元素名变量 ...
- 开源分布式中间件 DBLE 快速入门指南
GitHub:https://github.com/actiontech/dble 官方中文文档:https://actiontech.github.io/dble-docs-cn/ 一.环境准备 D ...
- access函数
access函数是按照实际用户ID和实际组ID进行访问测试的.函数的定义如下: #include <unistd.h> int access(const char* pathname, i ...
- CONTINUE...? ZOJ - 4033
CONTINUE...? ZOJ - 4033 题解:先计算一下总数sum是否是偶数,如果不是则不能分出来,如果是则从后面开始分,先把人分到1.3组,分完sum / 2这些人,如果恰好能够分成零,那么 ...