19.IO流(文件和字节流)

java基础入门-19-【IO(字节流&字符流)】 阅读详情

IO流

一.

1.什么是IO流?

在工作中,经常回去操作磁盘上的资源,这个过程中实现了数据的输入和输出操作,磁盘上的文件和内存之间进行交互,数据的交互需要有一个媒介或者管道,把这个媒介或者管道就称为IO流,也被称为输入输出流 I:Input O:Output

※※总结※※:

输入(read)是输入到内存中
输出(write)是输出到文件(硬盘)里


2.流的作用和原理

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。


3.IO流的种类:

父类:
在这里插入图片描述

在这里插入图片描述
读取数据的原理:![在这里插入图片描述](https://img-blog.csdnimg.cn/20190727140056307.png)

3.1按流向分:

1)输入流:

  • FileInputStream(继承InputStream抽象类)
    文件字节输入流(操作英文字母等)
  • FileReader(继承Reader抽象类)
    文件字符输入流(操作汉字和英文字母等)

2)输出流

  • FileOutputStream(继承OutputStream抽象类)
    文件字节输出流
  • FileWriter(继承Writer抽象类)
    文件字符输出流

3.2按流的内容分:

1)字节流:

  • FileInputStream文件字节输入流
  • FileOutputStream文件字节输出流

2)字符流:

  • FileReader文件字符输入流
    BufferedReader(常用,继承Reader)缓冲字符输入流
  • FileWriter文件字符输出流
    BufferedWriter(常用,继承Writer)缓冲字符输出流

二.

1.字节输入流:(InputStream抽象类)

方法:

在这里插入图片描述
文件字节输入流(FileInputStream):
在这里插入图片描述

package cn.cc.io;

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

/**
 * @author CC
 * 文件(字节)输入流
 */
public class InputSteamDemo {

	public static void main(String[] args) {
		InputSteamDemo inputSteamDemo = new InputSteamDemo();
		inputSteamDemo.readFile1();
		inputSteamDemo.readFile2();
	}
	
	public void readFile1() {
		FileInputStream fis = null;
		try {
			fis = new FileInputStream("F:\\abc.cui");
			//读取文件内容
			//声明一个字节数组,存放读取的内容
			byte[] content = new byte[1024];
			//读取文件信息
			fis.read(content);
			System.out.println(new String(content));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				fis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public void readFile2() {
		//创建文件对象
		File file = new File("F:\\c.cc");
		byte[] aryContent = new byte[(int) file.length()];
		FileInputStream fis = null;
		//创建字节输入流
		try {
			fis = new FileInputStream(file);
			fis.read(aryContent);
			System.out.println(new String(aryContent));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			if (fis != null) {
				try {
					fis.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}

}

2.字节输出流(OutputStream抽象类)

方法:
在这里插入图片描述
在这里插入图片描述

文件字节输出流(FileOutputStream):

package cn.cc.io;

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

/**
 * @author CC
 * 文件(字节)输出流
 */
public class OutPutStreamDemo {

	public static void main(String[] args) {
		OutPutStreamDemo outPutStream = new OutPutStreamDemo();
		outPutStream.writeFile();
	}
	
	public void writeFile() {
		String str = "java is a lanauage! \n hahaha";
		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream("F:\\c.ccc");
			fos.write(str.getBytes());
			System.out.println("写入成功!");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			if (fos!=null) {
				try {
					fos.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

3.字符输入流(Reader抽象类)

BufferedReader缓冲字符输入流(是对Reader的增强,与FileReader一样都继承自Reader)

package cn.cc.io;

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

/**
 * @author CC
 * 字符输入流
 * 一行一行的读取
 */
public class BufferedFileReaderDemo {

	public static void main(String[] args) {
		FileReader fr = null;
		BufferedReader br = null;
		
		try {
			fr = new FileReader("F:\\c.cc");
			br = new BufferedReader(fr);//为FileReader的对象fr创建一个缓冲区域
			//读取一行信息,BufferedReader中独有的方法
			String str = br.readLine();
			while(str!=null) {
				System.out.println(str);
				str = br.readLine();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

4.字符输出流(Writer抽象类)

BufferedWriter缓冲字符输出流(是对Writer的增强,与FileWriter一样都继承自Writer)

package cn.cc.io;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @author CC
 * 字符输出流
 * 一行一行的输出
 */
public class BufferedWriterDemo {

	public static void main(String[] args) {
		FileWriter fw = null;
		BufferedWriter bw = null;
		
		try {
			//续写
			//如果FileWriter("dir",true);的话表示这个文件不会被重新生成,会覆盖。
			//而且写入的内容是从这个文件的结尾开始写入。
			fw = new FileWriter("f:\\a.aa",true);
			bw = new BufferedWriter(fw);//为FileWriter的对象fw创建一个缓冲区域
			//如果文件第一行有信息,则新开辟一行
			//如果第一行没有信息,则直接写入
			bw.newLine();
			//在新行中写入内容
			bw.write("aaaaaaaa");//先写入到缓冲区中
			bw.flush();//刷新到硬盘中
			System.out.println("写入结束!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

ZEMAX优化方法---【Zemax学习】 在光学系统自动设计中,优化设计是光学设计中的重要阶段,也是ZEMAX软件的核心功能,涉及评价函数、权因子、阻尼因子等重要概念。在常用的阻尼最小二乘法优化设计的基础上,ZEMAX给我们提供了三种优化选择:Optimization(局部优化)、Global Search(全局优化)和 Hammer Optimization(锤形优化)。 阅读详情

相关推荐

如何使用obspy下载地震波形数据

如果你是地震研究学者,或者需要进行地震方面的研究,那么地震数据下载是一个必不可少的流程,本文将告诉你如何使用obspy下载想要的地震数据

monsterk1的博客 2074

Java输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作.Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io是大多数面...

weixin_30794491的博客 4985

新手小白如何学习编程

学习目标推荐第一门语言优势网站 / APP 开发(前端)JavaScript浏览器原生支持,能快速做出可视化效果后端 / 服务器 / 数据分析Python语法简洁像英语,库多、应用广(入门友好)游戏开发先用电竞入门,再转专业引擎硬件 / 嵌入式(比如单片机)C 语言贴近硬件,行业标准办公自动化(Excel / 文档处理)Python快速解决重复工作(比如批量改文件)👉新手首选推荐。

2501_94331842的博客 2231

IO流详细总结

一、IO流简介: 流的定义:流是指一连串流动的字符,是以先进先出方式发送信息的通道。 按流向分:输出流:OutputStream和Writer为基类                 输入流:InputStream和Reader为基类 按处理数据单元划分:字节流:字节输入流:InputStream基类                                            

往事随风的博客 2万+

使用 Java + PaddleOCR 实现表格识别,支持导出 HTML 和 Excel(附源码)

使用Java+PaddleOCR快速搭建表格识别系统,无需处理底层模型细节。系统支持表格结构识别和内容识别,可将图片转换为可编辑表格格式。文章提供了完整的实现流程,包括Maven依赖引入、模型下载(包含检测、识别、分类和表格结构模型)及参数配置说明。SmartJavaAI支持多种高性能模型选择,适用于不同应用场景,帮助开发者快速实现表格识别功能。

deng775747758的博客 1473

工作:三菱PLC与伺服之CC-Link IE Field Network通讯应用

CC-LINK-IE

好记性不如烂笔头 2万+

Java IO----简介

概念 流是一个抽象的概念,它代表一串数据的集合,当Java程序需要从数据源读取数据时,就需要开启一个到数据源的流。同样,当程序需要输出数据到目的地时,也需要开启一个流。流的创建是为了更方便地处理数据的输入和输出 流分为几种? 按照流的流向分,可以分为输入流和输出流 按照操作单元划分,可以划分为字节流和字符流 按照流的角色划分为节点流和处理流 Java Io流共涉及40多个类,这些类看上去很杂乱...

weixin_40599685的博客 186

PC网站实现微信扫码登录功能(二)

上篇我们介绍了怎么申请账号以及最后拿到appId和appSecret,如果有不清楚的可以看一下 PC网站实现微信扫码登录功能(一) 下面我就来说一下怎样在PC端怎么实现扫码登录功能。 一、进入官方文档网站 https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html 其实官网对过程描述的已经非常细致了。并且提供了两种扫码方式。一种是跳转二维码扫描页面,另一种是内嵌式二维码。大家可以

qq_35771266的博客 3万+

java IO流详细总结(一、字节输入输出流)

其中,BufferedOutputStream/BufferedInputStream 字节输入输出过滤缓冲流,可以提高IO的效率,减少磁盘的访问次数。其基本实现流程为先使用FileInputStream.read()方法读取到文件中的数据,再将读取到JVM中的数据通过FileOutputStream.write()方法写入到想要复制的文件中。还可以实现字节包装类(过滤流也加包装类,同一个意思)来增强缓冲区的功能,提高IO的效率,减少磁盘的访问次数。//被transient修饰的属性,不参与序列化。

2401_89840955的博客 638

解决 TensorFlow 和 Keras 的 Python 版本兼容问题:详细技术指南

本文提供了TensorFlow和Keras与Python版本不兼容问题的完整解决方案。通过版本对照表指出不同TensorFlow版本对应的Python支持范围,强调2.13.x仅支持Python 3.9-3.11,且不兼容Python 3.12+。给出最佳实践建议:使用虚拟环境管理项目依赖,推荐venv或conda创建独立环境;指导正确安装TensorFlow和Keras版本,建议优先使用tf.keras避免冲突;针对常见报错如DLL加载失败、模块导入错误等提供具体解决方法。最后给出一个在兼容环境中运行的M

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

3、利用预训练卷积神经网络进行特征提取

本文介绍了如何使用预训练的卷积神经网络(如VGG16)进行图像特征提取,并将提取的特征存储在HDF5数据集中,以便后续用于机器学习模型的训练。文章详细阐述了特征提取的原理、HDF5数据格式的优势、HDF5DatasetWriter类的实现、特征提取流程的代码实现以及实际应用案例。通过该方法,可以在多种图像数据集上高效构建高精度的分类模型。

z2a3b4c5d的博客 112

【Day19】IO 流(一):字节流与字符流,文件读写实战

哈喽,各位 Java 学习者!欢迎来到《Java 学习日记》的第十九篇内容~ 今天我们聚焦 IO 流的核心基础 ——字节流与字符流,这是处理文件读写的最核心工具。很多新手会混淆字节流和字符流的使用场景,也容易踩 “乱码”“资源泄漏” 的坑,本文会从基础概念、核心 API、实战案例到避坑指南,帮你彻底掌握文件读写的核心技能!

maihuohuo的博客 1145

TC3XX - MCAL知识点(三):MCU EB-tresos配置说明及代码浅析

AURIX 2G Tc3xx的配置相较AURIX 1G Tc2xx来讲简化了许多,但是依赖于数据手册的理解来讲整个MCU功能做了较大增强,此处先简单的介绍一下,本文前期先补充介绍一下英飞凌手册的阅读规则,因为后面的文章会基于此文的一些缩写进行截图寄存器之类的。MCU在AUTOSAR架构里面的图示如下MCU驱动程序负责配置SCU、GTM、CCU6、GPT12和STM外设。驱动程序提供由AUTOSAR指定的运行时服务。

梦想技术家 2871

19-io流(一),文件对象,字节流的输入输出

19-io流 File: 文件对象 import java.io.File; import java.io.IOException; public class FileDemo { public static void main(String[] args) throws IOException { //构建成一个file对象 //将硬盘上的一个文件构造成了一个java...

qq_26270869的博客 254

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JavaSE_day19 IO流、File类、字节流、字符流、文件流、缓冲流、转换流、数据流、对象流、打印流、Scanner与System与IO流

* File类 * 字节流 * 字符流 * 文件流 * 缓冲流 * 转换流 * 数据流 * 对象流 * 打印流 * Scanner与System与IO流

weixin_44890576的博客 3020

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java 二进制文件 续写_递归;IO流【输入输出流】;字节流;字节输入流;字节输出流;文件续写;文件拷贝 (Java Day19)...

一,递归概述:方法自己调用自己的现象叫做递归​ 递:传递 传递数据​ 归:回归【回到起点的意思】​ 传递数据到原点。每传递一个数据完成回到原点传递下一个数据;传递动作是重复,只不过数据发生了变化而已。功能是唯一的。​ 把重复的动作封装成为一个方法,传递数据回归到原点的时候;再次调用方法传入新的数据就可以。这样的操作我们命名为递归。​ 特点描述:数据传递过程中最后传递数据会得到一个固定值,不需要再...

weixin_32050033的博客 229

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java IO流面试总结

java IO流面试总结

Java仗剑走天涯 4万+

Chp19-IO1-字节流

自定义类型必须实现Serializable接口, 意味着允许被序列化(IO流可以读取类的完整信息)可以通过给属性添加transient修饰符的方式防止某些属性参与序列化//防止被序列化....序列化: 将对象相关的所有内容进行读取的过程反序列化: 读取相关信息组装成对象的过程//先往file/a.txt中写入一个学生对象, 再读取输出try(//添加对象过滤流){//先写- 序列化对象信息//读取输出- 反序列化对象}catch...

m0_62214280的博客 942

java中的io流

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出 。

m0_66689823的博客 1万+

一个月学会Java 第19天 IO流(文件操作,读写文件)

一个月学会Java 第19天 IO流(文件操作,读写文件)

XingZaiUnrivaled的博客 1159

6.19、JAVA IO流 File 字节流 字符流

1 流Stream在学习IO流之前,我们首先需要学习的概念就是Stream流为了方便理解,我们可以把数据的读写操作抽象成数据在"管道"中流动,但需注意:1.流只能单方向流动2.输入流用来读取 → in3.输出流用来写出 → out4.数据只能从头到尾顺序的读写一次所以以程序的角度来思考,In/out 相对于程序而言的输入(读取)/输出(写出)的过程.封装一个磁盘路径字符串,对这个路径可以执行一次操作可以封装文件路径、文件夹路径、不存在的路径1.主流分类。

weixin_58276266的博客 289

IO流---文件字节流,字符流,文件拷贝

字节流操作四大步骤: 1,创建源 2,选择流 3,执行操作 4,通知关闭资源 FileInPutStream类:字节输入流 从文件中读入信息: 1 package cn.ftf.io; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import ...

weixin_30414635的博客 157

IO流:字节流

1.前置知识:字符集简介使用ASCII码表示128个字符,第一位都是0。GBK:一个中文字符编码成两个字节存储。包含ASCII,汉字第一个字节第一位必须是1,以此来区分是汉字还是字母或者其他。Unicode:万国码。UTF-32:四个字节表示一个字符。UTF-8:可变长编码方案。一到四个字不等。ASCII占一个字节,汉字占...

cnzzs的博客 870

19.java-IO流

​ IO流就是程序中数据的管道, 可以做数据传输I:input 输出(读取)O:output 输出(写出)

qq_71116105的博客 721

【Java IO流】字节流和字符流详解

一、字节流 1)输入和输出流 首先,字节流要进行读和写,也就是输入和输出,所以它有两个抽象的父类InputStream、OutputStream。 InputStream抽象了应用程序读取数据的方式,即输入流。 OutputStream抽象了应用程序写出数据的方式,即输出流。 2)读写结束 在字节流中当读写结束,达到文件结尾时,称为EOF = End或者读到-1就读到结尾。 3)输入流基本方法 首...

以爱护甲,爱满枫林。 416

java IO流学习总结

java IO流学习总结 近期学习了Java的IO流,尝试着总结一下。 java.io 包下的IO流很多: 其中,以Stream结尾的为字节流,以Writer或者Reader结尾的为字符流。所有的输入流都是抽象类IuputStream(字节输入流)或者抽象类Reader(字符输入流)的子类,所有的输出流都是抽象类OutputStream(字节输出流)或者抽象类Writer(字符输出流)的...

weixin_34290096的博客 2394
上一篇: 18.File类
下一篇: 20.NIO非阻塞IO
cuichen97
博客等级 码龄7年 34粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值