通过举例了解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的简介 流按操作数据分为两种:字节流与字符流. 流 ...
随机推荐
- 用js刷剑指offer(链表中倒数第k个结点)
题目描述 输入一个链表,输出该链表中倒数第k个结点. 牛客网链接 思路 设置两个指针,p,q,先让p走k-1步,然后再一起走,直到p为最后一个 时,q即为倒数第k个节点 js代码 // 空间复杂度1 ...
- curl命令的用法
curl 命令详解 命令事例 发送POST请求: 如果传输文件:curl -F "blob=@tmp.txt;type=text/plain" localhost:8080/r ...
- python+mysql:实现一千万条数据插入数据库
作业要求 构建一个关系模式和课本中的关系movies(title,year,length,movietype,studioname,producerC)一样的关系,名称自定,在这个关系中插入1000万 ...
- 玩深度学习选哪块英伟达 GPU?有性价比排名还不够!
本文來源地址:https://www.leiphone.com/news/201705/uo3MgYrFxgdyTRGR.html 与“传统” AI 算法相比,深度学习(DL)的计算性能要求,可以说完 ...
- [ 转载 ]hashCode方法的相关用法
想要明白hashCode的作用,你必须要先知道Java中的集合. 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set. 你知道它们的区别吗?前者集合内的元素是有 ...
- 《图解HTTP》笔记2
1.SSL(Secure Socket Layer,安全套接层) 1)SSL的作用 通信加密 确定通信方 SSL 提供认证和加密处理及摘要功能 HTTP 协议中没有加密机制,但可以通过和 SSL(Se ...
- IdentityServer(三)密码模式
前言 用户名密码模式相较于客户端凭证模式,多了用户.通过用户的用户名和密码向Identity Server申请访问令牌.密码模式有两种实现方式. 1.把用户写进内存Identity从中读取账号密码验证 ...
- c语言1博客作业10
一.本周作业头 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/10101 ...
- idea jsp文件中body标签内引入编辑器后提示statement expected
解决方案: 1.用标签将script包一层解决问题 2.或者在</script>后添加自闭和标签(推荐) <input/>.<img/> //等等自闭和标签
- JavaScript, JQuery事件委托
1.引言 现实当中,前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款.(公司也不会容忍那么多员工站在门口就为了等快递); 这种事件委托还有个好处,就是即便公司又来很多员工 ...