JavaIO流(2)--IO流原理、流的分类及流的基本规范操作
2021/9/25 20:14:01
本文主要是介绍JavaIO流(2)--IO流原理、流的分类及流的基本规范操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- IO流简介
- IO流原理
- 流的分类
- IO 流体系
- 节点流和处理流
- 流的基本操作
IO流简介
I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。
Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行。
java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
IO流原理
输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。
输出output:将程序(内存)数据输出到磁盘、光盘等存储设备中。
流的分类
①按操作数据单位不同分为:字节流(8 bit 一般用于非文本文件),字符流(16 bit 一般用于文本文件)
②按数据流的流向不同分为:输入流,输出流(相对的)
③按流的角色的不同分为:节点流(直接处理文件),处理流(处理被包含的流)
IO 流体系
Java的IO流共涉及40多个类,实际上非常规则,都是从如下4个抽象基类派生的。
由这四个类派生出来的子类名称都是以其父类名作为子类名后缀。
节点流和处理流
节点流:直接从数据源或目的地读写数据
处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
流的基本操作
读入以FileReader为例
import java.io.File; import java.io.FileReader; import java.io.IOException; /** * @Author: Yeman * @Date: 2021-09-25-16:30 * @Description: */ public class FileReaderTest { public static void main(String[] args) { FileReader fileReader = null; try { //一定需要try-catch //1、实例化File对象,指明要操作的文件 File file = new File("IO\\hello.txt"); //2、提供具体的流 fileReader = new FileReader(file); //3、读取操作 int read = fileReader.read(); //空参为一位一位读取,末尾返回-1 while (read != -1){ System.out.print((char) read); read = fileReader.read(); } } catch (IOException e) { e.printStackTrace(); } finally { //4、关闭流 try { if (fileReader != null) { //确保不会因具体流未创建而产生空指针异常 fileReader.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
import java.io.File; import java.io.FileReader; import java.io.IOException; /** * @Author: Yeman * @Date: 2021-09-25-16:30 * @Description: */ public class FileReaderTest { public static void main(String[] args) { FileReader fileReader = null; try { //一定需要try-catch //1、实例化File对象,指明要操作的文件 File file = new File("IO\\hello.txt"); //2、提供具体的流 fileReader = new FileReader(file); //3、读取操作 char[] chars = new char[5]; //char型数组为参数,该数组相当于一个容器,把读取放在里面,返回该次读取的个数,末尾返回-1 // 最后若不够,容器后部分仍为上一次取的,前部分则被新的这次取到的覆盖了 int length = fileReader.read(chars); while (length != -1){ for (int i = 0; i < length; i++) { System.out.print(chars[i]); } length = fileReader.read(chars); } } catch (IOException e) { e.printStackTrace(); } finally { //4、关闭流 try { if (fileReader != null) { fileReader.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
写出以FileWriter为例
import java.io.*; /** * @Author: Yeman * @Date: 2021-09-25-16:30 * @Description: */ public class FileReaderTest { public static void main(String[] args) { FileWriter fw1 = null; //若硬盘中不存在file,创建之;若存在,内容覆盖之 try { //1、实例化File对象,指明要写出的文件 File file = new File("IO\\hi.txt"); //2、创建具体的流 fw1 = new FileWriter(file); //FileWriter fw2 = new FileWriter(file,false); //若硬盘中不存在file,创建之;若存在,内容覆盖之 //FileWriter fw3 = new FileWriter(file,true); //若硬盘中不存在file,创建之;若存在,内容追加之 //3、写出操作 fw1.write("Hello World!\n",0,5); //写出“Hello” fw1.write("你好,世界!"); //写出“你好,世界!” } catch (IOException e) { e.printStackTrace(); } finally { //4、关闭流 try { if (fw1 != null) fw1.close(); } catch (IOException e) { e.printStackTrace(); } } } }
这篇关于JavaIO流(2)--IO流原理、流的分类及流的基本规范操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)