通过举例了解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的简介 流按操作数据分为两种:字节流与字符流. 流 ...
随机推荐
- ubuntu安装supervisor
1. Ubuntu14中supervisor的安装及配置 2. Ubuntu 14.04下进程管理工具supervisor安装 3. Supervisor使用教程 4. supervisor在deep ...
- centos7下安装zookeeper&zookeeper集群的搭建
一.centos7下安装zookeeper 1.zookeeper 下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2.安装步骤 ...
- nginx简单反向代理实例
一.要做什么? 实例最后实现的效果图: 我们在浏览器地址栏上输入 wangtong,代理服务器获取请求,将请求转发至指定的 tomcat 上 二.怎样做? 1.准备环境 虚拟中中需要安装 JDK+To ...
- cookies, session, token
Cookie 是由客户端(通常是浏览器)保存的小型文本信息,其内容是一系列的键值对,是由 HTTP 服务器设置并保存在浏览器上的信息. 在post请求的瞬间,cookie会被浏览器自动添加到请求头中. ...
- Spring的使用及Spring3.2控制器增强@ControllerAdvice
在xml配置了这个标签后,spring可以自动去扫描base-pack下面或者子包下面的java文件,如果扫描到有@Component. @Controller.@Service等这些注解的类,则把这 ...
- JQuery实践--动画
显示和隐藏没有动画的元素 使包装集里的元素隐藏 hide(speed,callback) speed:可选,速度.slow,normal,fastcallback:函数,可选,完成后调用的函数,无参数 ...
- JAVA的带参数的方法
一.带参数的方法 1.1 语法: <访问修饰符> 返回类型 <方法名>(<形式参数列表>) { //方法的 ...
- DbVisualizer 连接AS400
1.安装DbVisualizer 2.下载JTopen 里面会有jt400.jar http://sourceforge.net/projects/jt400/files/latest/downloa ...
- 【线性代数】4-4:正交基和Gram算法(Orthogonal Bases and Gram-Schmidt)
title: [线性代数]4-4:正交基和Gram算法(Orthogonal Bases and Gram-Schmidt) categories: Mathematic Linear Algebra ...
- Java分布式互联网架构/微服务/高性能/springboot/springcloud2018年10月16日直播内容
2018年10月16日直播内容 架构师揭秘springboot对springmvc的自动配置原理 直播地址:https://ke.qq.com/course/179440?tuin=9b386640 ...