java关于IO流的总结

SECS/GEM协议中的关键指令详解:从S1F1到S9F9的完整指南 本文详细解析了SECS/GEM协议中从S1F1到S9F9的关键指令,涵盖设备状态管理、控制诊断、报警处理等核心功能。通过实际案例和调试技巧,帮助开发者掌握半导体制造设备通信标准,解决SECS/GEM协议在实际工程应用中的通讯难题,提升生产线智能化水平。 阅读详情

java的IO流设计的很精巧,其中也涉及了设计模式中的装饰者模式。以此同时,由于IO流所涉及的类相对繁多,很多初学者往往会有或多或少的疑惑,甚至举步维艰,不知道该如何选取适合的流对象来完成相应的功能,很是头疼。看似简单,却不能正确把握要点。

那么,如何正确且快速掌握IO流呢?其实IO流也是有规律可寻的。

首先,先了解一些IO流的基本知识。

知识背景回顾:byte是字节,byte[]是字节数组,char是字符,char[]是字符数据,够详细了吧。接着记住这四个类,传说中的IO的奶爸奶妈。

用于处理字节的两个字节流:InputStream 与 OutputStream。

用于处理字符的两个字符流:Reader 与 Writer。

站在程序的角度,当程序要读入数据的时候,用InputStream字节输入流或者Reader字符输入流。同理,当程序要写出数据的时候,用OutputStream字节输出流或者Writer字符输出流。

那么,什么时候用字节流,什么时候用字符流呢?

字节byte,大小8位,字符char,大小16位,等于两个字节,字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等。

所以知道了以上的知识后,只要是处理文本,汉字等内容的数据,都是使用有关于字符流的类,而当要处理音频文件、图片、歌曲、视频文件等内容的数据,使用字节流来处理。

当我们要开始着手写程序的时候。

1、思考什么方式读什么数据。

2、思考程序处理后的数据以什么方式写数据。

比如:要将硬盘上一个文本文件,复制到硬盘上的另外一个位置。

1、什么方式读什么数据:文件的方式读文本数据,所以使用字符输入流,操作的是文件,选用FileReader。

2、什么方式写数据:文件的方式写文本数据,所以使用字符输出流,操作的是文件,选用FileWriter。

于是有如下代码:

package com.java4fun;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IOTest {
	public static void main(String[] args) {
		copyFile();
	}

	private static void copyFile() {
		FileReader reader = null;
		FileWriter writer = null;
		try {
			// 建立读入文本,处理文件的字符流
			reader = new FileReader("D:\\log.txt");
			// 建立写出文本,处理文件的字符流
			writer = new FileWriter("D:\\log_copy.txt");
			// 将数据读入后存入字符数据中
			char[] buf = new char[1024];
			int len = 0;
			//当读到结尾时返回-1
			while ((len = reader.read(buf)) != -1) {
				//将数据写出到新的文件
				writer.write(buf,0,len);
				//刷新缓冲区,将数据写入文件中
				writer.flush();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			throw new RuntimeException("未找到要复制的文件");
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("建立复制文件异常");
		} finally {
			try {
				if (reader != null)
					reader.close();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("关闭输入流异常");
			}
			try {
				if (writer != null)
					writer.close();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("关闭输出流异常");
			}
		}
	}
}
那么,比如:要将硬盘上一个mp3文件,复制到硬盘上的另外一个位置。
1、什么方式读什么数据:文件的方式读非纯文本数据,所以使用字节输入流,操作的是文件,选用FileInputStream。
2、什么方式写数据:文件的方式写非纯文本数据,所以使用字节输出流,操作的是文件,选用FileOutputStream。
于是有如下代码:

package com.java4fun;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class IOTest {
	public static void main(String[] args) {
		copyFile();
	}

	private static void copyFile() {
		FileInputStream input = null;
		FileOutputStream output = null;
		try {
			// 建立读入非纯文本数据,处理文件的字节流
			input = new FileInputStream("D:\\白狐.mp3");
			// 建立写出非纯文本数据,处理文件的字节流
			output = new FileOutputStream("D:\\狐白.mp3");
			// 将数据读入后存入字节数组中
			byte[] buf = new byte[1024];
			int len = 0;
			//当读到结尾时返回-1
			while ((len = input.read(buf)) != -1) {
				//将数据写出到新的文件
				output.write(buf,0,len);
				//刷新缓冲区,将数据写入文件中
				output.flush();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			throw new RuntimeException("未找到要复制的文件");
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("建立复制文件异常");
		} finally {
			try {
				if (input != null)
					input.close();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("关闭输入流异常");
			}
			try {
				if (output != null)
					output.close();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("关闭输出流异常");
			}
		}
	}
}

那么,又如:要将键盘录入的数据,以文件的形式保存到硬盘。
1、什么方式读什么数据:字节数据,所以使用字节输入流,可是我们要以文本的形式存储,所以使用字节转字符的转换字符输入流,InputStreamReader
2、什么方式写数据:文件的方式写文本数据,所以使用字符输出流,操作的是文件,选用FileWriter。
于是有如下代码:

package com.java4fun;

import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;

public class IOTest {
	public static void main(String[] args) {
		copyFile();
	}

	private static void copyFile() {
		InputStreamReader isr = null;
		FileWriter fw = null;
		try {
			// 读进来的是字节,要将其处理成字符。所以建立字节转字符的转换字符流
			isr = new InputStreamReader(System.in);
			// 将字符写出到文件中,建立文件输出字符流
			fw = new FileWriter("D:\\content.txt");
			char[] buf = new char[1024];
			int len = 0;
			while ((len = isr.read(buf)) != -1) {
				//去掉回车换行
				String content = new String(buf,0,len-2);
				//当输入end时,停止从键盘上获取字符。
				if("end".equals(content)) {
					break;
				}else{
					fw.write(content);
					//加入回车换行。
					fw.write("\r\n");
					fw.flush();
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (isr != null)
					isr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				if (fw != null)
					fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}

为了提高流处理的效率,我们可以为流加上缓冲区。

四个用于缓冲的类:

同样,缓冲字节流的BufferedInputStream,BufferedOutputStream.

同样,缓冲字符流的BufferedReader,BufferedWriter.

通常我们操作流的时候,效率极低,而且IO流提供给我们的缓冲类为什么提供了读取或操作数据很方便的方法。如BufferedReader的readLine()读取一行的方法,newLine()的方法等等。

缓冲流的使用也非常简单,构造缓冲流,接着将要缓冲的流传入即可。

例子如下,为上面的文本文件复制加入缓冲。

package com.java4fun;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class IOTest {
	public static void main(String[] args) {
		copyFile();
	}

	private static void copyFile() {
		BufferedReader br = null;
		BufferedWriter bw = null;
		try {
			// 缓冲流中传入用于读文本,处理文件的字符流
			br = new BufferedReader(new FileReader("D:\\log.txt"));
			// 缓冲流中传入用于写出文本,处理文件的字符流
			bw = new BufferedWriter(new FileWriter("D:\\log_copy.txt"));
			// 将数据读入后存入字符数据中
			String line = null;
			while((line = br.readLine())!=null){
				//写入一行文本数据,这个方法不会写入一行中的换行字符\r\n
				bw.write(line);
				//换行方法
				bw.newLine();
				bw.flush();
			}
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			throw new RuntimeException("未找到要复制的文件");
		} catch (IOException e) {
			e.printStackTrace();
			throw new RuntimeException("建立复制文件异常");
		} finally {
			try {
				if (br != null)
					//缓冲流的关闭实际是对作用流的关闭
					br.close();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("关闭输入流异常");
			}
			try {
				if (bw != null)
					bw.close();
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException("关闭输出流异常");
			}
		}
	}
}


26. Fabric2.2 司法存证的智能合约分析 有很多同学反馈 Fabric 智能合约读起来比较费劲,对于新手不友好看不懂,这里选择一个司法存证的智能合约,阅读、分析智能合约基础框架与核心流程代码,培养大家智能合约编写的方法论。 阅读详情

相关推荐

DS18B20温度传感器项目实战:从驱动编写到LCD显示,打造你的第一个温控系统

本文详细介绍了如何使用DS18B20温度传感器和LCD1602显示屏构建一个完整的温控系统。从硬件连接、OneWire协议实现到温度数据采集与LCD显示,全面解析了系统整合与工程化实现的关键步骤,帮助开发者快速掌握嵌入式温度监测系统的开发技巧。

weixin_42525328的博客 349

java要点笔记——IO流

------- android培训、java培训、期待与您交流! ---------- IO流 day2001-IO流(输入流&输出流) 1、IO(Input  Output)流:IO流用来处理设备之间的数据传输。 2、流,按操作数据分为两种:字节流、字符流。 3、流,按流向分氛围两种:输入流、输出流。 4、哪到哪是输入,哪到哪是输出? 把数据往内存里放,是输入。把数据从内存

u013114489的博客 928

abaqus热力耦合模拟教程学习笔记

学习资源:BV1je4y1a7Ku软件:abaqus2016以m为单位制。

qq_41900477的博客 2万+

Java IO流详解

原文 Java IO流详解 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 IO又分为流IO(java.io)和块IO(java.nio) Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的

ss810540895的博客 1万+

ABAP HANA BP主数据批导

SAPhana官方推荐的创建bp主数据的类是CL_MD_BP_MAINTAIN 客户的创建具体示例代码如下: DATA: LT_RETURN_MAP TYPE MDG_BS_BP_MSGMAP_T. DATA: LS_RETURN_MAP TYPE MDG_BS_BP_MSGMAP. DATA: LS_MESSAGE_MAP TYPE MDG_BS_BP_MSGMAP_KEY. DATA: LT_DATA TYPE CVIS_EI_EXTERN_.

IamRunjiang的博客 4143

小程序HTTPS证书配置踩坑记:为什么Android访问失败而iOS正常?

本文深入剖析了小程序开发中常见的跨平台网络问题:Android访问HTTPS接口失败而iOS正常。核心原因在于服务器(如Nginx)HTTPS证书链配置不完整,Android系统对此校验严格,而iOS相对宽松。文章提供了从问题诊断、使用在线工具检测到修复Nginx证书链配置的完整解决方案,并总结了HTTPS部署的最佳实践,帮助开发者从根本上避免此类“玄学”故障。

weixin_29207149的博客 394

【Java IO流】IO流详解

IO,即InputOutput,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括磁盘文件、管道、网络连接Java中是通过流处理IO的,那么什么是流?流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道当Java程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是磁盘文件、内存、网络连接等等。类似地,当Java程序需要写入数据的时候,就会开启一个通向目的地的流。

m0_55908255的博客 1695

道岔故障监测系统设计(源码+开题)

通过实时监控道岔的工作状态,系统能够及时发现异常情况,预防潜在的安全隐患,从而减少事故发生的概率。此外,监测系统还能够为维护人员提供详细的数据支持,帮助他们更准确地判断道岔的磨损程度和故障类型,优化维修计划,延长道岔的使用寿命。随着智能化、自动化技术的发展,道岔故障监测系统的设计与应用也将推动铁路行业的技术进步,为实现智能铁路和未来交通系统的构建奠定基础。因此,开展道岔故障监测系统的设计研究,不仅具有重要的工程实践价值,也有助于推动铁路运输行业向更高水平的发展。

灵军程序设计 771

Java IO流知识点总结

I(Input)O(Output) 通过IO可以处理程序与外部环境之间的数据传输。

weixin_43836337的博客 1868

基于STM32的家庭环境监测毕业设计(全部资料)

本文设计并实现了一套基于STM32的家庭环境监测系统,具备温湿度、烟雾浓度和PM2.5检测功能,通过OLED屏实时显示数据,并能自动或手动控制风扇、加湿器等设备。系统采用分层架构设计,包含数据采集、处理、显示和控制执行模块,经测试性能稳定可靠。研究结果表明,该系统能有效提升家庭环境监测与控制的智能化水平,但仍存在传感器精度和智能化程度不足等问题,未来可进一步优化硬件配置并引入AI算法提升性能。

3254968421的博客 462

2026 企查查/天眼查:IP频率限制 + 验证码策略,企业工商数据采集实战

企业工商数据采集技术解析与解决方案 本文深度剖析了2026年企查查和天眼查平台的反爬机制与技术对抗方案。主要内容包括: 反爬机制分析: 采用JA4+ TLS指纹识别、极验v6验证码等多层防护 IP限制策略严格区分未登录/普通/VIP账号 精准识别并封禁数据中心IP 核心解决方案: 构建高可用住宅代理池,动态轮换真实用户IP 基于YOLOv8的验证码缺口识别技术(准确率99%) 分布式架构设计,支持千万级数据采集 多账号池管理与行为模拟技术 技术亮点: 动态住宅IP池实现1%以下封禁率 Playwright浏

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1326

Java IO流之IO流基础

IO流介绍 IO基础之File类 IO流之字符流 IO流之字节流 IO流之Scanner类

Mr.mooye 2848

利用CAT12做皮层指标的统计分析及可视化笔记记录

利用CAT12做皮层指标的统计分析及可视化 文章目录利用CAT12做皮层指标的统计分析及可视化前言一、统计步骤1.Basic Models2.Estimate Surface Models3.Results二、可视化1.t值可视化2.p值可视化 前言 本来没有打算做SBM的,因为自己是新手小白,许多操作都不太懂,但最后还是打算做一下,于是就从上周末开始将很久之前跑VBM得到的surf文件夹中的数据捡起来继续做皮层分析,因为之前看了一个博主的博客,关于如何做SBM已经讲得非常清楚了,但是在统计及可视化这里,我

weixin_52073820的博客 8094

Java——IO流

存储和读取数据的解决方案IO流和File是息息相关的。

pangyaqi的博客 1707

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java IO流学习总结

学习了几天的java IO流,下面我来谈谈对java 输入输出流IO的个人见解吧! 转载自:https://blog.youkuaiyun.com/zhaoyanjun6/article/details/54292148/ java流类结构图 一.流的概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。它的特性是进行数据传输; 例如从水源地长江把水导入自来水厂,然后又从自...

coder150806的博客 5万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Java的File与IO流

File类位于java.io包下,是文件和目录路径名的抽象表示,提供了一系列对文件和文件夹本身操作的方法,它不能读写数据。read(字节数组)一次性读取多个字节,注意要判断实际读取的字节到底有多少,以免错误地读取字节数组之前遗留的数据。默认缓冲池大小为8KB。注意:File类是路径名的抽象表示,构建一个File实例并不会创建一个文件,不管文件是否存在,都可以创建任意文件名的File实例。[] listFiles() 一级文件对象数组,包含隐藏文件,无权限访问则为null,主调为文件也为null。

m0_73077892的博客 1829

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

java中的IO流

如果new的File对象所表示的文件或目录并不存在,那么并不会应位new了一个File对象,操作系统就在对应的路径下创建所对应的文件和目录,它仅仅是在JVM的堆中new了一个File对象而已。java为了避免这种类型安全性问题的发生,使序列化接口类在每次编译时,自动生成一个序列化版本ID,用以区别不同的版本,当序列化和反序列化的版本不一致时,就会失败,抛出异常。然而,有些修改并不影响对象的反序列化,如类中加入了新的实例变量,而序列化的数据中并没有新实例变量的值,那么它在反序列化的过程中可以使默认值。

冲出仁川,走出马德里,故事还会再继续 2526

java基础——IO流

是字节输入流,用于从文件中读取字节数据。int data;= -1) {

2403_87486006的博客 795

java io流不关闭有什么后果_Java IO流

一、基本概念 IO是Java对数据的操作是通过流的方式,数据传输是需要通道的,而IO流就是数据传输的通道。IO流可以形象的比喻为运送货物的传输带。IO流用来处理设备之间的数据传输,上传文件和下载文件,Java用于操作流的对象都在IO包中。总结一下,Java IO输入机制就是为了允许程序读取外部数据(包括来自于磁盘、光盘等存储设备的数据)和用户输入的数据。 Java的IO流通过java...

weixin_39563827的博客 2325

IO流【Java】

IO流的系统学习笔记

amazing2024的博客 1162

Java IO流

Java IO 也称为IO流,IO = 流,它的核心就是对文件的操作,对于 字节 、字符类型的输入和输出流。 IO是指对数据流的输入和输出,也称为IO流,IO流主要分为两大类,字节流和字符流。字节流可以处理任何类型的数据,如图片,视频等,字符流只能处理字符类型的数据。 IO流的本质是数据传输,并且流是单向的。 常用的字节流FileInputStream、FileOutputStream、ObjectInputStream、ObjectOutputStream。 IO分阻塞型IO和非阻塞型IO(.

rmkloveme 1352

java io流_Java——IO流超详细总结

该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。在初学Java时,IO流是我遇到的一个很头疼的东西,Java IO 体系看起来类很多,感觉很复杂,但其实是 IO 涉及的因素太多了。在设计 IO 相关的类时,编写者也不是从同一个方面考虑的,所以会给人一种很乱的感觉,并且还...

weixin_39838362的博客 2162

Java-IO流基础

当程序需要读取数据源的数据时,就会通过IO流对象开启一个通向数据源的流,通过这个IO流对象的相关方法可以顺序读取数据源中的数据。IO流相当于一个管道。

2402_88479893的博客 1106

Java中IO流常见的几种流

序列流 序列流合并文件 package com.cloud.day5; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.SequenceInputStream;

午-夜 1万+

java io流

java IO流 什么是IO流 io是input/output的简称。在我们大学学习计算原理的时候,我们知道计算的组成: 输入设备,输出设备,存储器(内存,外存),运算器,控制器。 程序 = 数据结构 + 算法 ; 程序需要处理能够读取输入的数据,并且经过程序处理之后需要输出到存储器进行持久化。 java对输入输出进行了封装,给我们提供了一系列的api,使我们脱离于对最底层硬件的操...

勿在浮沙筑高台 1万+

Java之IO流

文章目录1、File1.1、File概述和构造方法1.2、File类创建功能1.3、File类判断和获取功能2、字节流3、字符流4、特殊操作流 1、File 1.1、File概述和构造方法 File:它是文件和目录路径名的抽象表示。 文件和目录是可以通过File封装成对象的。 对于File而言,其封装的并不是一个真正存大的文件,仅仅是一个路径名。它可以是存在的,也可以是不存在的。 方法名 说明 File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新

809
上一篇: 工厂设计模式
下一篇: Java 常用API的运用,效率及技巧
Sweeter
博客等级 码龄14年 81粉丝 41原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值