当前位置: 首页 > news >正文

java IO流_1

目录

分类

字节流

InputStream

OutputStream

文件拷贝

字符流

FileReader

FileWriter

处理流

BufferedReader

BufferedWriter

文本拷贝


        流是从起源到接受的有序数据,通过流的方式允许程序使用相同的方式来访问不同的输入/输出源。        

分类

按数据单位分:字节流(二进制文件)        字符流(文本文件)

按数据流向分:输入流        输出流

按流的角色分:节点流        处理流 

IO流的40多个类都是由这四个抽象基类派生的

字节流

InputStream

常用子类:

  1. FileInputStream        文件输入流
  2. BufferedInputStream          缓冲字节输入流
  3. ObjectInputStream        对象字节输入流             
import java.io.FileInputStream;public class FileInputStream_ {public static void main(String[] args) {readFile01();System.out.println();readFile02();}public static void readFile01(){String path="D:\\javacode\\IO\\src\\test.txt";int read;FileInputStream fis=null;try {fis=new FileInputStream(path);while((read=fis.read())!=-1)//读取一个字节的数据,读到末尾返回-1{System.out.print((char)read);//一个一个读}} catch (Exception e) {e.printStackTrace();}finally {try {fis.close();} catch (Exception e) {e.printStackTrace();}}}public static void readFile02(){String path="D:\\javacode\\IO\\src\\test.txt";byte[] buf=new byte[8];FileInputStream fis=null;int len;try {fis=new FileInputStream(path);while((len=fis.read(buf))!=-1)//读取一个字节的数据,读到末尾返回-1{System.out.print((new String(buf,0,len)));//一次最多读入buf.length字节的数据,存入字节数组buf}} catch (Exception e) {e.printStackTrace();}finally {try {fis.close();} catch (Exception e) {e.printStackTrace();}}}
}

OutputStream

子类:FileOutputStream

import java.io.FileOutputStream;public class FileOutputStream_ {public static void main(String[] args) {writeFile01();}public static void writeFile01(){String path="D:\\javacode\\IO\\src\\test.txt";FileOutputStream fos=null;try {//fos=new FileOutputStream(path);//覆写fos=new FileOutputStream(path,true);//加true,追加文本fos.write('6');fos.write("helloworld".getBytes());//获取str对应的字节数组} catch (Exception e) {e.printStackTrace();}finally {try {fos.close();} catch (Exception e) {e.printStackTrace();}}}
}

#字节流中文会乱码,这是因为只能存一个字节一个字节输出 

文件拷贝

import java.io.FileInputStream;
import java.io.FileOutputStream;public class FileCopy {public static void main(String[] args) {//文件拷贝FileInputStream fileInputStream=null;//输入流FileOutputStream fileOutputStream=null;//输出流//源文件和目标文件String srcpath="C:\\Users\\Elysia\\Pictures\\Saved Pictures\\illust_86465238_20210124_003335.jpg";String destpath="D:\\javacode\\IO\\src\\pic.jpg";try {fileOutputStream=new FileOutputStream(destpath,true);fileInputStream=new FileInputStream(srcpath);byte[] buf=new byte[1024];int len;while((len=fileInputStream.read(buf))!=-1){fileOutputStream.write(buf,0,len);}} catch (Exception e) {e.printStackTrace();}finally {try {fileOutputStream.close();fileInputStream.close();}catch (Exception e){e.printStackTrace();}}}
}

字符流

FileReader

import java.io.FileReader;public class FileReader_ {public static void main(String[] args) {FileReader fileReader=null;String path="D:\\javacode\\IO\\src\\test.txt";try {fileReader=new FileReader(path);char[] buf=new char[8];//用char接收int len;while((len=fileReader.read(buf))!=-1){System.out.print(new String(buf,0,len));}
//            int read;//单个读取
//            while((read= fileReader.read())!=-1){
//                System.out.print((char)read);
//            }} catch (Exception e) {e.printStackTrace();}finally {try {fileReader.close();//关闭文件}catch (Exception e){e.printStackTrace();}}}
}

FileWriter

import java.io.FileWriter;public class FileWriter_ {public static void main(String[] args) {FileWriter fileWriter=null;String path="D:\\javacode\\IO\\src\\test.txt";try{fileWriter=new FileWriter(path,true);//加true表示追加fileWriter.write("\n成功写入");}catch (Exception e){e.printStackTrace();}finally {try{fileWriter.close();//必须 一定 关闭流,才能真正的写入}catch (Exception e){e.printStackTrace();}}}
}

必须 一定 关闭/flush流,才能真正的写入

 

处理流

        将“流”包装,在其之上为程序提供更强大的读写功能

 节点流的数据源是特定的,而处理流则利用了向上转型,可以封装多种“流”,减小了节点流之间的差异。

优势:

  1. 使用处理流进行 读写操作更简单
  2. 处理流增加了缓冲,提高效率 

#在关闭包装流的时候,会自动关闭里面封装的字节流

BufferedReader

        从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取。

import java.io.BufferedReader;
import java.io.FileReader;public class BufferedReader_ {public static void main(String[] args) throws Exception{String path="D:\\javacode\\IO\\src\\test.txt";BufferedReader bufferedReader=new BufferedReader(new FileReader(path));String line;//按行读取,效率高while((line=bufferedReader.readLine())!=null){System.out.println(line);//读取一行}bufferedReader.close();//只需要关闭包装流}
}

BufferedWriter

        文本写入字符输出流,缓冲字符,以提供单个字符,数组和字符串的高效写入。

import java.io.BufferedWriter;
import java.io.FileWriter;public class BufferedWriter_ {public static void main(String[] args) throws Exception{String path="D:\\javacode\\IO\\src\\test.txt";BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter(path,true));bufferedWriter.newLine();//插入一个换行bufferedWriter.write("成功写入");bufferedWriter.close();}
}

文本拷贝

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;public class TxtCopy {public static void main(String[] args) throws Exception{String dest="D:\\javacode\\IO\\src\\dest.txt";String src="D:\\javacode\\IO\\src\\test.txt";BufferedReader bufferedReader=new BufferedReader(new FileReader(src));BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter(dest));String line;while((line=bufferedReader.readLine())!=null){bufferedWriter.write(line);//末尾没有换行符bufferedWriter.newLine();//每读取一行,插入换行符}bufferedWriter.close();bufferedReader.close();}
}

相关文章:

java IO流_1

目录 分类 字节流 InputStream OutputStream 文件拷贝 字符流 FileReader FileWriter 处理流 BufferedReader BufferedWriter 文本拷贝 流是从起源到接受的有序数据,通过流的方式允许程序使用相同的方式来访问不同的输入/输出源。 分类 按数据…...

【回忆 总结】我的大学四年

大学四年关键词速览 如果穿越回大一,你想对大一的你提什么最重要的建议?同样是上网课,我为何能比大多数同学学的更好?回到学校,我的大二似乎一帆风顺?在不断的迷茫和徘徊中,大三的我做出的决定&…...

深度解析OEKO

【深度解析OEKO】 什么是OEKO-TEX Standard 100? OEKO-TEX Standard 100现在是使用最为广泛的纺织品生态标志。OEKO-TEX Standard 100规定的标准是根据最新的科学知识,对纱线、纤维以及各类纺织品的有害物质含量规定限度。只有按照严格检测和检查程序提供…...

Golang gorm

GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 一 对多入门 比如要开发cmdb的系统,无论是硬件还是软件。硬件对应的就是对应的哪个开发在用。或者服务对应的是哪个业务模块在使用,或者应用谁在使用。那么这…...

rk3568 适配摄像头 (CIF协议)

rk3568 适配摄像头 (CIF协议) 在RK3568处理器中,支持CIF协议的摄像头可以通过CSI接口连接到处理器,实现视频数据的采集和处理。同时,RK3568还支持多种图像处理算法和编解码器,可以对采集到的视频数据进行实时处理和压缩&#xff…...

今天面试招了个25K的测试员,从腾讯出来的果然都有两把刷子···

公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-25k,面试的人很多,但平均水平很让人失望。看简历很多都是4年工作经验,但面试中,不…...

Redis---集群环境准备

一、redis集群环境准备 1、部署Redis集群的目的: 多台服务器一起提供数据存储服务; 实现数据的分布式存储; 可以实现服务的高可用; 可用实现数据自动备份; 2、服务器IP地址及端口: 主机名 IP地…...

数据结构考研版——队列的配置问题

一、正常配置下的情况 队空状态 frontrear;入队操作 出队操作 队满状态 在正常配置下元素的个数&#xff08;rear>front&#xff09; 当rear<front 综上所述用一个表达式表示&#xff1a;(rear-frontmaxSize)%maxSize 二、非正常配置下的情况1 队空状态 入队操作…...

【SOAP-WebService系列】SOAP学习笔记

目录 1、SOAP是什么&#xff1f; 2、SOAP特性 3、SOAP消息组成 4、SOAP调用 5、SOAP和HTTP 1、SOAP是什么&#xff1f; SOAP(Simple Object Access Protocol&#xff0c;即简单对象访问协议) &#xff0c;是一个轻量级协议&#xff0c;用于在分散的分布式环境中使用XML在对…...

材料科学|名词解释终版!!!

晶体&#xff1a;组成物质的原子&#xff0c;分子或离子按照一定的周期性规则排列形成的固体。 非晶体&#xff1a;原子在三维空间的不规则排列&#xff0c;长程无序&#xff0c;各向同性。 晶体结构&#xff1a;原子&#xff0c;离子&#xff0c;原子团按照空间点阵而进行的…...

永久免费内网穿透不限制速度

市面上的免费内网穿透大都有格式各样的限制&#xff0c;什么限制流量啊&#xff0c;每个月要签到打卡啊&#xff0c;还有更改域名地址等&#xff0c;只有神卓互联内网穿透是永久免费没有限制的&#xff0c;白嫖也可以。 这篇文章分享了3个方案&#xff0c;按照性能和综合指标排…...

JAVA开发运维(云基础设备监控)

在大型的商用系统中&#xff0c;经常需要监控云设备的健康状态&#xff0c;性能情况&#xff0c;流量数据等。及时发现系统问题&#xff0c;及时修复&#xff0c;以确保系统的高可用。检查云资源的工作内容主要包括基础监控、主动拨测、用户体验、APM监控、指标体系、业务分析、…...

现在备考2023年5月软考网络工程师时间够吗?

距离2023年5月软考还有1个多月的时间&#xff0c;备考网络工程师的时间是够的&#xff0c;以下是一些备考方法&#xff1a; 1.了解考试内容 在你开始学习考试之前&#xff0c;了解考试的形式和内容是很重要的。这将帮助你把注意力集中在最有可能被测试的领域。你应该复习考试…...

webp怎么转换成png,4个方法教你快速处理

webp怎么转换成png&#xff1f;目前在一些比较大的图片素材网站下载的图片都是webp格式的。我们都知道webp格式图片&#xff0c;它在正常的图片浏览器中是无法打开的。 所以说我们要把webp图片转变成png格式&#xff0c;正常来说我们常用的图片处理软件也能进行格式转换&#x…...

程序员能干多久?程序员能干到多大年龄?

程序员可以工作多少年?大多数程序员认为程序员是吃青春饭的工作。编程只能干到30岁&#xff0c;最长可达35岁。我经常听到这样的话&#xff0c;都让人倍感压力。今天&#xff0c;我们来谈谈这个老话题...... 程序员能干多久&#xff1f; 根据国外的经验来说&#xff0c;干到…...

采购系统是如何管理供应商的?

随着数字化的推进&#xff0c;企业面临着越来越多的供应商管理问题。企业采购数字化转型已经成为大势所趋&#xff0c;对于采购数字化转型而言&#xff0c;供应商管理是重要一环。 供应商准入管理 在供应商准入阶段&#xff0c;企业需要从供应商资质、财务能力、信誉能力、管理…...

Linux学习笔记(2)--一些内核接口

1&#xff09;dump_stack dump_stack()是Linux内核中的一个函数&#xff0c;用于在内核中输出当前的函数调用栈。该函数会输出当前线程&#xff08;或进程&#xff09;的函数调用栈信息&#xff0c;以及相应的调用地址和虚拟内存地址等信息&#xff0c;一般用于诊断程序运行时…...

学习风`宇博客用户权限菜单模块

文章目录 用户-角色-菜单-资源 各表关系图菜单 和 路由菜单表及分析分析 /api/admin/user/menus接口MenuServiceImpl#listUserMenus接口返回示例及分析 前端代码分析menu.jsSideBar.vue 接口权限控制资源表 及 分析分析 WebSecurityConfig权限控制整体流程先说登录UserDetailsS…...

centos7.6部署ELK集群(一)之elasticsearch7.7.0集群部署

32.3. 部署es7.7.0 32.3.1. 下载es&#xff08;各节点都做&#xff09; wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-linux-x86_64.tar.gz 32.3.2. 解压至安装目录&#xff08;各节点都做&#xff09; tar -xvf elasticsearch-7.7.0-li…...

leetcode142. 环形链表 II

给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...