首页 / JAVA / java进阶-第十一讲 IO
java进阶-第十一讲 IO
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java进阶-第十一讲 IO,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3105字,纯文字阅读大概需要5分钟。
内容图文
![java进阶-第十一讲 IO](/upload/InfoBanner/zyjiaocheng/604/3278b93a8c4940dcb67f33253309e6a4.jpg)
java进阶-第十一讲 IO
1 什么IO
IO:
Input:输入。
Output:输出。
计算机中,什么是输入?什么是输出?
计算机中:
输入的概念是往内存中读入硬盘上的数据,这叫读 read
输出的概念是从内存中往硬盘上写数据,这叫做写 write
怎么理解:
我们人就相当于一台电脑,
读:读书,是不是将书上(硬盘)的内容读入到大脑(内存)中,这叫做输入
写:写文章,是不是将大脑中(内存)的知识写到纸上(硬盘),这叫做输出
2 流的分类
流按照方向分为两种:输入流、输出流,
输入流指的是:往内存中存入数据,叫做输入,也叫作读,Inputxxx
输出流指的是:从内存中往外取数据,叫做输出,也叫作写,Outputxxx
按照读取数据的类型来分,分为:字节流和字符流两种
什么是字节流:每次读取一个字节,8bit -- 1Byte
什么是字符流:每次读取一个字符。比如"a曹操",读取的时候一次读取一个字符
先读取'a',然后读取'曹',汉字在windows中存储是两个字节,'a'在windows中占1个字节
使用字符流读取的时候,他会帮你包装好,一次读到的就是一个字符。
区别:
字节流可以读取任何形式的数据:包括文本、音频、图像、视频等等
字符流只能读取纯文本形式的数据,也就是txt格式的数据。
字节流有哪些:
以后你们只要看到以Stream结尾的都是字节流,比如InputStream,OutputStream
FileInputStream/FileOutputStream
BufferedInputStream/BufferedOutputStream
字符流有哪些:
以后你们只要看到以Reader或者是Writer结尾的都是字符流。
Reader/Writer
FileIuptStreamReader/FileOutputStreamWriter
问:如果要读取图片,用什么流?字节流
“a中国我爱你”
如果用字节流读的话,每次只能读一个字节,1Byte。
第一次读 ‘a’
第二次读 只能读中字的一半
如果用字符流,第一次读 'a' 第二次直接读'中'
windows中,一个汉字占2个字节,一个英文字符栈1个字节
3 InputStream
InputStream: 输入流,字节输入流,往内存中读入数据
InputStream是一个抽象类,无法创建对象,所以,我们要使用它的子类。
这也是多态的应用,它的子类用得最多的是FileInputStream
往内存中读,要有哪些先决条件?
1.先要有输入源。有了输入源才能往内存中读入数据。
2.FileInputStream的输入源是什么东西?File文件,所以先要有文件
InputStream is = new FileInputStream(String或者File);
String类型的参数表示:文件的路径
File类型的参数表示:一个文件对象
3.FileInputStream就是一个输入的管道,通过这个管道中的read方法将硬盘上的数据
读入到内存中
流的步骤:
1.确定源
2.打开流
3.操作
4.关闭流
流一般情况下都是配套使用,也就是Input搭配一个Output
操作的步骤和上面一致
先打开的流后关闭
输出流一定要刷新,即调用flush()方法
有异常要捕获。
// 文件的拷贝
package com.tj.IO;
import java.io.*;
/**
* @program: Study
* @description:
* @author: tianjie
* @create: 2021-02-16 12:49
*/
public class IOTest02 {
public static void main(String[] args) {
// 1 确定源
File srcFile = new File("/IdeaProjects/Study/src/com/tj/IO/IOTest01.java");
File destFile = new File("/IdeaProjects/Study/src/com/tj/IO/IOTestcpy01.txt");
FileInputStream fis = null;
FileOutputStream fos = null;
// 2 打开流
try {
fis = new FileInputStream(srcFile);
fos = new FileOutputStream(destFile);
// 3 操作
byte[] flush = new byte[4];
// 3.1 read
while (fis.read(flush) != -1) {
// 3.2 write
fos.write(flush);
fos.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != fos) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != fis) {
try {
// 4 关闭流
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
内容总结
以上是互联网集市为您收集整理的java进阶-第十一讲 IO全部内容,希望文章能够帮你解决java进阶-第十一讲 IO所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。