JAVA--IO流

一、IO流什么?

I/O是Input/output的缩写,用于处理设备之间的数据传输。如读/写文件、网络通讯。
java程序中,对于数据的输入、输出是以流(Stream)的方式进行。
Java.io包下提供了各种流类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
输入Input:读取外部数据(磁盘、光盘等存储设备的数据)到程序内存中。
输出Output:将程序中(内存)数据输出到磁盘、光盘等存储设备中。

二、流的分类

1.按操作的数据单位不同分为:字节流(8bit)图片视频、字符流(16bit)更适合处理文本
2.按数据流的的流向不同分为:输入流、输出流
3.按流的角色的不同分为:节点流、处理流

抽象基类 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer
Java的io流涉及40多个类,都是从4个抽象基类派生的。
由这四个类派生出来的子类名称都是以其父类名作为子类后缀。
在这里插入图片描述
抽象基类 节点流(文件流) 缓冲流(处理流的一种)
InputStream FileInputStream BufferedInputStream
OutputStream FileOutputStream BufferedOutputStream
Reader FileReader BufferedReader
Writer FileWriter BufferedWriter

三、节点流(文件流)

1.文件字符输入流FileReader

package com.java01;import java.io.File;
import java.io.FileReader;
import java.io.IOException;public class IoDemo {public static void main(String[] args)  {File file=new File("C:/ZStudy/aa.txt");FileReader fr=null;try {fr= new  FileReader(file);int data;while((data=fr.read())!=-1){System.out.println();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {fr.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

read方法重载read(cbuf)

package com.java01;import java.io.File;
import java.io.FileReader;
import java.io.IOException;public class IoDemo02 {public static void main(String[] args) {//1.File类的实例化File file =new File("C:/ZStudy/aa.txt");//2.流的实例化FileReader fr=null;try {fr=new FileReader(file);//3.读入的详细操作//返回每次读入cbuf数组中的字符个数,如果达到文件末尾,返回-1char[] cbuf=new char[5];int len;while((len=fr.read(cbuf))!=-1){for(int i=0;i<len;i++){System.out.print(cbuf[i]);}		}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{//4.关闭流if(fr!=null){try {fr.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}

2.文件字符输出流FileWriter

从内存中写出数据到硬盘的文件里。
1.输出操作,对应的File可以不存在,并不会报异常。
2.File对应的硬盘中的文件如果不存在,在输出的过程中,会自动创建此文件。
File对应的硬盘中的文件如果存在,
如果流使用的构造器是FileWriter(file,false),对原有文件覆盖。
如果流使用的构造器是FileWriter(file,true),不会对原有文件覆盖,而是在原有文件基础上追加内容。

package com.java01;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;public class IoFilewriterDemo {public static void main(String[] args) throws IOException {//1.File类的实例化File file=new File("C:/ZStudy/bb.txt");//2.流的实例化FileWriter fw=	new FileWriter(file,false);//3.输出的详细操作fw.write("FileWriter\n");fw.write("FileWriter01");//4.关闭流fw.close();}}

3.使用FileReader、FileWriter对文本实现复制

package com.java01;import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;public class Copy {public static void main(String[] args) {//1.实例化File类的对象,指明读入和写出的文件File file1=	new File("C:/ZStudy/bb.txt");File file2=	new File("C:/ZStudy/dd.txt");FileReader fr = null;FileWriter fw = null;try {fr = new FileReader(file1);fw = new FileWriter(file2);//2.实例化FileReader、FileWriter类的对象//3.数据读入和写出的操作char[] cbuf = new char[5];int len;while ((len = fr.read(cbuf)) != -1) {fw.write(cbuf, 0, len);}} catch (Exception e) {// TODO: handle exception}finally{try {if(fw!=null)fw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {if(fr!=null)fr.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

4.FileInputStream字节输入流

对于文本文件(.txt、.java、.c、.cpp)用字符流处理
对于非文本(.jpg、MP3、MP4、avi、doc、ppt)用字节流处理
用字节FileInputStream、FileOuputStream输入输出流实现图片复制

package com.java01;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class FileInputOutputStreamDemo {public static void main(String[] args) {File file1=	new File("C:/ZStudy/640.png");File file2=	 new File("C:/ZStudy/641.png");FileInputStream fs=null;FileOutputStream fo=null;try {fs = new FileInputStream(file1);fo = new FileOutputStream(file2);byte[] buff = new byte[5];int len;while ((len = fs.read(buff)) != -1) {fo.write(buff, 0, len);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{try {if(fo!=null)fo.close();} catch (IOException e) {// TODO Auto-generated catch block}try {if(fs!=null)fs.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

5.FileOuputStream字节输出流

四、缓冲流(处理流的一种)

作用:提供流的读取、写入的速度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/43181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web自动化(六)unittest 测试报告跳过用例

三种类型测试报告&#xff1a;unittest.TextTestRunner、BeautifulReport、HTMLTestRunner Python3.0 无法直接安装 HTMLTestRunner 安装 XTestRunner pip install XTestRunner安装 BeautifulReport pip install BeautifulReportimport unittestclass TestSkipCase(unittest…

ELfK logstash filter模块常用的插件 和ELFK部署

ELK之filter模块常用插件 logstash filter模块常用的插件&#xff1a; filter&#xff1a;表示数据处理层&#xff0c;包括对数据进行格式化处理、数据类型转换、数据过滤等&#xff0c;支持正则表达式 grok 对若干个大文本字段进行再分割成一些小字段 (?<字段名…

【算法篇】KMP算法,一种高效的字符串匹配算法

我们今天了解一个字符串匹配算法-KMP算法&#xff0c;内容难度相对来说较高&#xff0c;建议先收藏再细品&#xff01;&#xff01;&#xff01; KMP算法的基本概念 KMP算法是一种高效的字符串匹配算法&#xff0c;由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt提出的&#…

LLMs之gptpdf:gptpdf的简介、安装和使用方法、案例应用之详细攻略

LLMs之gptpdf&#xff1a;gptpdf的简介、安装和使用方法、案例应用之详细攻略 目录 gptpdf的简介 1、处理流程 第一步&#xff0c;使用 PyMuPDF 库&#xff0c;对 PDF 进行解析出所有非文本区域&#xff0c;并做好标记&#xff0c;比如: 第二步&#xff0c;使用视觉大模型&…

离婚后,孩子就读私立高中的高昂学费谁承担?

江苏省南京市六合区人民法院审结一起抚养费纠纷案件&#xff0c;认定夫妻双方在决定孩子教育事务上均存在责任&#xff0c;为保障临近高考的未成年子女的切身利益&#xff0c;认定由夫妻双方按比例承担教育费。   2015年6月&#xff0c;李某与王某离婚&#xff0c;双方之子小…

PCL 有序点云的法线估计(使用积分图进行法线估计)

使用积分图进行法线估计 一、概述1.1 概念1.2 有序点云与无序点云1.2.1 有序点云1.2.2 无序点云1.3 代码讲解二、代码实现三、结果示例一、概述 1.1 概念 使用积分图进行法线估计:计算一个有序点云的法线,注意该方法只适用于有序点云。 1.2 有序点云与无序点云 有序点云与无…

MySQL安装时initializing database失败

问题页面&#xff1a; 解决方法&#xff1a; 1.勾选红框中的选项&#xff1a; 2.将下图红框中全部改为英文&#xff1a; 然后一路next就可以了。

cs231n作业1——KNN

参考文章&#xff1a;assignment1——KNN KNN 测试时分别计算测试样本和训练集中的每个样本的距离&#xff0c;然后选取距离最近的k个样本的标签信息来进行分类。 方法1&#xff1a;Two Loops for i in range(num_test):for j in range(num_train):dist X[i, :] - self.X…

vue3使用方式汇总

1、引入iconfont阿里图库图标&#xff1a; 1.1 进入阿里图标网站&#xff1a; iconfont阿里&#xff1a;https://www.iconfont.cn/ 1.2 添加图标&#xff1a; 1.3 下载代码&#xff1a; 1.4 在vue3中配置代码&#xff1a; 将其代码复制到src/assets/fonts/目录下&#xff1…

Mysql之Using index for skip scan

一、Using index for skip scan 在 MySQL 中&#xff0c;EXPLAIN 语句用于显示查询执行计划&#xff0c;帮助我们理解查询是如何被执行的&#xff0c;以及如何优化查询。其中&#xff0c;Extra 列提供了关于查询执行的一些额外信息。当 Extra 列显示 Using index for skip sca…

CF F. Alex‘s whims

原题链接&#xff1a;Problem - 1899F - Codeforces 题目大意&#xff1a;要求构建出一颗树&#xff0c;多次询问树的叶节点之间的距离有没有达到要求的距离&#xff0c;如果有直接输出-1 -1 -1&#xff0c;如果没有可以断开一条边和连上一条边&#xff0c;输出x y z&#xff…

mp4视频太大怎么压缩不影响画质,mp4文件太大怎么变小且清晰度高

在数字化时代&#xff0c;我们常常面临视频文件过大的问题。尤其是mp4格式的视频&#xff0c;文件大小往往令人望而却步。那么&#xff0c;如何在不影响画质的前提下&#xff0c;有效地压缩mp4视频呢&#xff1f;本文将为您揭秘几种简单实用的压缩技巧。 在分享和存储视频时&am…

Open3D 计算点云的欧式距离

目录 一、概述 1.1欧式距离定义 1.2作用和用途 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 3.1原始点云 3.2处理后点云 一、概述 在Open3D中&#xff0c;compute_point_cloud_distance函数用于计算两个点云之间的距离。具体来说&#xff0c;它计算的是源点云…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验16 路由信息协议RIP

一、实验目的 1.验证RIP协议的作用&#xff1b; 二、实验要求 1.使用Cisco Packet Tracer仿真平台&#xff1b; 2.观看B站湖科大教书匠仿真实验视频&#xff0c;完成对应实验。 三、实验内容 1.构建网络拓扑&#xff1b; 2.验证RIP协议。 四、实验步骤 1.构建网络拓扑 …

sdbusplus:将文件描述符作为method的返回值

sdbusplus:通过文件描述符作为参数调用method_libsdbusplus-CSDN博客 介绍了使用文件描述符作为参数的方式 文件描述符也可以作为method的返回值,然后用来传递数据 服务器端: //s.cpp #include <sdbusplus/asio/connection.hpp> #include <sdbusplus/asio/object…

js list to tree

在JavaScript中&#xff0c;将列表转换为树结构是一种常见的操作&#xff0c;尤其是在处理需要层级展示的数据&#xff0c;如菜单、分类等。这通常涉及到递归函数和对象的引用。以下是一个简单的例子&#xff0c;展示了如何将一个扁平化的列表转换为多层级树结构。 假设我们有以…

【图像处理】Krita 一款开源免费专业图像处理软件分享

软件介绍 Krita 是一款专业级的图像处理软件&#xff0c;适合数字绘画和创作。它不仅支持栅格图像的细致编辑&#xff0c;还提供了强大的矢量图形工具&#xff0c;使得用户可以在同一个平台上完成多种类型的创作工作。同时具备一定的矢量图形编辑功能。Krita 的首要用途是绘画…

黑马点评商户缓存查询作业——Redis中查询商户类型

记录下自己在gpt帮助下完成的第一个需求~~~ 1. ShopTypeController 2. IShopTypeService 3. ShopTypeServiceImpl&#xff08;模仿ShopServiceImpl来写的&#xff09; 一共分为“1.redis中查询缓存”→“2.判断缓存是否存在&#xff0c;存在直接返回”→“3.缓存不存在则去查数…

2-28 基于matlab提取出频域和时域信号的29个特征

基于matlab提取出频域和时域信号的29个特征&#xff0c;主运行文件feature_extraction&#xff0c;fre_statistical_compute和time_statistical_compute分别提取频域和时域的特征&#xff0c;生成的29个特征保存在生成的feature矩阵中。程序已调通&#xff0c;可直接运行。 2-2…

C语言 printf 函数多种输出格式以及占位输出

一、输出格式 在C语言中&#xff0c;printf 函数提供了多种输出格式&#xff0c;用于控制不同类型数据的输出方式。 1.整数输出格式 %d&#xff1a;以十进制形式输出整数。 %o&#xff1a;以八进制形式输出整数&#xff08;无前导0&#xff09;。 %x 或 %X&#xff1a;以十六进…