JAVA IO操作——字节流和字符流

Pythia: A Customizable Hardware Prefetching Framework Using Online Reinforcement Learning——“预取”论文解读 参考传送门: 1. Hardware Prefetching笔记 2. 全球百科——缓存预取 3. 百度百科——缓存数据预期技术 目录0. 什么是Hardware Prefetching(本节内容不包括在论文中)1. 简介1.1 关于Hardware Prefetching的一些关键信息1.2 现阶段方法的缺陷1.3 论文团队的目标1.4 核心思想2. 必要的背景知识介绍2.1 强化学习(Reinforcement learning)2.2 为什么说强化学习是一个好的解决思路3. 解决方法与思路3.1 Py 阅读详情

Java中换行  \r\n


在整个IO包中,流的操作就分为两种:

字节流:

字节输出流 OutputStream、字节输入流 InputStream

字符流:

字符输出流 Writer、字符输入流 Reader


IO操作的基本步骤:

在JAVA中使用IO操作必须按照以下的步骤完成:

1、使用File找到一个文件

2、使用字节流或字符流的子类为OutputSteam、InputStream、Writer、Reader进行实例化操作

3、进行读或写的操作

4、关闭:close(),在流的操作中必须进行关闭。


字节输出流:

在java.io包中 OutputStream是字节输出流的最大父类。

public abstract class OutputStream extends Object implements Closeable,Flushable

此类是一个抽象类,所以使用的时候需要依靠子类进行实例化操作

如果此时要完成文件的输出操作,则使用FileOutputStream为OutputStream进行实例化操作。

OutputStream提供了以下的写入数据方法:

*写入全部字节数组:public void write(byte[] b)throws IOException

*写入部分字节数组:public void write(byte[] b,int off,int len)throw IOException

*写入一个数据: public void write(int b)throw IOException


将字符串“"this is a OutputStream demo "写到g盘下的outputstremdemo.txt文件中并且换行


1、将全部的字节数组内容输出:

package com.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileOutputSteamDemo {
	public static void main(String args[]){
		//要操作的文件
		File file = new File("g:"+File.separator+"outputstremdemo.txt");
		//声明字节输出流
		OutputStream outputStream = null;
		try {
			//通过子类实例化
//			outputStream = new FileOutputStream(file);
			//当为true表示可以追加
			outputStream = new FileOutputStream(file,true);
			//要输出的信息
			String str = "this is a OutputStream demo "+"\r\n";
			//将String变为byte数组
			byte b[] = str.getBytes();
			//写入数据
			outputStream.write(b);
			//关闭
			outputStream.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
}


2、通过循环一个个输出:(通常采用此种方法)

package com.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class FileOutputSteamDemo {
	public static void main(String args[]){
		//要操作的文件
		File file = new File("g:"+File.separator+"outputstremdemo.txt");
		//声明字节输出流
		OutputStream outputStream = null;
		try {
			//通过子类实例化
//			outputStream = new FileOutputStream(file);
			//当为true表示可以追加
			outputStream = new FileOutputStream(file,true);
			//要输出的信息
			String str = "this is a OutputStream demo "+"\r\n";
			//将String变为byte数组
			byte b[] = str.getBytes();
			for(int i=0;i<b.length;i++){
				//通过循环一个个写入数据
				outputStream.write(b[i]);
			}
			//关闭
			outputStream.close();
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
}


字节输入流:InputStream

使用InputStream可以读取输入流的内容,那么此类的定义如下:

public abstract classInputStreamextends Object implements Closeable

此类也属于一个抽象类。

如果要想使用的话,依靠其子类,如果现在是文件操作则使用的是FileInputStream。

FileInputStream类的构造方法:

public FileInputStream(File file)throw FileNotFoundException

实例化之后就可以通过如下的方法取得数据:

*将内容读到字节数组之中 public int read(byte[] b) throw IOException

*每次读一个数据:public abstract int read() throw IOException


将文件的内容读取进来:

package com.demo;

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


public class InputStreamDemo {
	public static void main(String[] args) throws IOException{
		//要操作的文件
		File file = new File("g:"+File.separator+"outputstremdemo.txt");
		//字节输入流 通过其子类进行实例化操作
		InputStream inputStream = new FileInputStream(file);
		//开辟空间接收要读取的内容
		byte[] b = new byte[1024];
		//将内容读入到byte数组中
		int len =inputStream.read(b);
		//输出内容
		System.out.println(new String(b,0,len));
		System.out.println("结束");
		//关闭
		inputStream.close();
	}
}

以上是一种比较常见的读取形式,但是以上代码会受到开辟空间的限制。

如果现在想动态开辟数组的空间,则可以根据文件的大小来决定,采用read()方法一个个的读取数据。

public class InputStreamDemo {
	public static void main(String[] args) throws IOException{
		//要操作的文件
		File file = new File("g:"+File.separator+"outputstremdemo.txt");
		//字节输入流 通过其子类进行实例化操作
		InputStream inputStream = new FileInputStream(file);
		//开辟空间接收要读取的内容
		byte[] b = new byte[(int) file.length()];
		for(int i=0;i<b.length ;i++){
			b[i] =(byte) inputStream.read();
		}
		//输出内容
		System.out.println(new String(b));
		System.out.println("结束");
		//关闭
		inputStream.close();
	}
}

字符输出流:Writer

Writer类是在io包中操作字符的最大父类,主要功能是完成字符流的输出。

Writer的定义格式:

public abstract class Writer extends Object implements Appendable,Closeable,Flushable

此类也是一个抽象类。

如果进行文件中的保存,则使用FileWriter。

写入操作:public void writer(String str) throw IOException.不用再转换


package com.demo;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class WriterDemo {
	public static void main(String[] args) throws IOException {
		//要操作的文件
		File file = new File("g:"+File.separator+"writedemo.txt");
		//Writer writer = new FileWriter(file);
		//通过子类实例化字符输出流,true表示可以追加
		Writer writer = new FileWriter(file,true);
		//写入数据
		writer.write("this is a writer demo  \r\n");
		//关闭
		writer.close();
	}
}

字符输入流:Reader

字符输入流与字节输入流不同的地方在于,使用的是char数组。Reader类的定义:

public abstract class Reader extends Object implements Readable,Closeable

是一个抽象类,要是现在进行文件的读取使用FileReader。

读取的方法:

*读取一组字符:public int read(char[] cbuf) throw IOException

*读取一个字符:public int read() throw IOException


package com.demo;

import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class ReaderDemo {
	public static void main(String[] args) throws IOException {
		//要操作的文件
		File file = new File("g:"+File.separator+"writedemo.txt");
		//通过子类进行实例化操作 实例化字符输入流
		Reader reader = new FileReader(file);
		//开辟空间接收读取的内容
		char b[] = new char[(int)file.length()];
//		reader.read(b);
		
		for(int i=0;i<b.length;i++){
			b[i] = (char)reader.read();
		}
		System.out.println(new String(b));
		reader.close();
	
	}
}

字节流与字符流的区别:

字符流不 关闭writer.close 或者 writer.flush就无法输出内容

*字节流在操作的时候是直接与文件本身关联,不使用缓冲区

字节——>文件

*字符流在操作的时候是通过缓冲区与文件操作

字符——>缓冲——>文件


综合比较来讲,在传输或者在硬盘上保存的内容都是以字节的形式存在的所以字节流较多,但是在操作中文的时候字符流比较好使。





总结:

1、在JAVA中所有的IO操作都定义在java.io包中。

2、File类表示与平台无关的文件操作,只负责文件的本身,而不负责文件的内容。

3、OutputStream和InputStream是字节输出、输入流,通过FileXx实例化。

4、Writer和Reader是字符的输出、输入流,通过FileXx实例化

5、字节流是直接操作文件本身的,而字符流是需要通过缓存操作文件本身



把 Claude Code 接进 ABAP 世界,vibing-steampunk 到底能做什么 《Vibing Steampunk:AI Agent 与 ABAP 开发的工程化桥梁》摘要 Vibing Steampunk(vsp)是一个连接 AI Agent 与 SAP ABAP 开发环境的开源工具,通过 Model Context Protocol(MCP)将 ABAP 开发能力标准化。它解决了传统 ABAP 开发中 AI 辅助工具的局限性,使 Claude Code 等 AI 编程助手能够直接访问 ADT API,实现代码读写、调试、测试等完整开发流程。该工具采用 Go 语言开发,提供 147 个 阅读详情

相关推荐

Vue3结合vue-office实现Word文档上传与预览全流程解析

本文详细解析了如何在Vue3项目中集成vue-office插件实现Word文档上传与预览功能。从项目初始化、插件安装到文件上传处理(包括ArrayBuffer转换)、预览优化及常见问题解决方案,提供了一套完整的实现流程,帮助开发者快速实现高效的文档预览功能。

weixin_29001327的博客 464

Android IO文件读写

Android写入txt文件并读取

qq_27494201的博客 268

【无标题】ReaxFF拟合参数以及算法安装

ReaxFF拟合参数以及算法安装

zmzyzm的博客 1419

Android技能树 — Android存储路径及IO操作小结

对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的最后,互联网不存在所谓的寒冬,只是你没有努力罢了!《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门即可获取!学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的[外链图片转存中…(img-8hdD6TNG-1711792498248)]

2401_84010414的博客 898

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

Vivado2019.1 ZYNQ7020无Uart SDK调试打印调试信息xil_printf

泛红尘的博客 2997

Ubuntu安装pytorch3d的最便捷方法【原创】

Ubuntu安装pytorch3d的最便捷方法

qq_54900679的博客 2924

安卓io流总结

stream:任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。我们经常使用的stream基本上都是从这两个类继承而来:Inputstream和Outputstream I/O流的类型:字节流和字符流 字节流:以字节为单位向stream中写入或者从stream中读取。一般的二进制数据都使用字节流,比如声音和图像等 字符流:以Unicode字符为单位向stream中写入或

677

从零理解域随机化:通过Isaac Lab的events.py掌握Sim-to-Real关键技术

本文深入解析域随机化技术如何通过Isaac Lab的events.py实现Sim-to-Real迁移,提升机器人策略在真实世界的鲁棒性。从刚体属性到环境条件的系统级随机化,详细介绍了工程实践中的关键参数配置与调试技巧,帮助开发者有效缩小仿真与现实的差距。

weixin_29062613的博客 260

Gradle Android 引入os文件的3种方式

使用gradle构建android项目时引入os文件的方式: 1.os转jar:task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") { destinationDir file("$projectDir/libs") baseName

Hxuejie的专栏 1607

记录一次小项目中的重放攻击与解决方案

文章目录1、重放攻击简介2、重放攻击演示3、解决方案4、重放攻击验证 欢迎各位 前(提)来(出)讨(意)论(见)。 1、重放攻击简介 重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。 举个简单的小例子。 我们往系统里面插入一条数据,如果此次操作的数据包被攻击者获取,又恰巧后台没有对重复内容进行验证,那么攻击者就可以利用该数据包重复的发起请求,无限制的往数据库插入数据,即使请求包是加密的也

fiveSix 8726

Claude Code Cli 源码泄露事件全解析:从51万行代码中拆解AI Agent的记忆护城河

2026年3月,Anthropic的AI编程助手Claude Code意外泄露51万行核心代码,暴露了其多Agent架构、六级权限验证系统及创新的记忆机制。记忆系统采用四层设计:用户自定义框架、自动记忆提取、智能上下文压缩和纯文件存储。最独特的是"自动做梦"功能,AI会定期整理记忆,类似人类睡眠记忆巩固。代码还揭示未发布功能如电子宠物系统,但也暴露权限系统漏洞和代码质量问题。这次泄露展现了AI助手核心技术的复杂性,特别是其记忆系统如何通过透明可编辑的设计建立用户信任。

program哲学 469

【Android开发学习06】Android中的文件I/O操作

本节分两部分: 1.访问SD卡. 2.访问手机中的存储文件夹. 3.读取assets中的文件. 一.访问SD卡: 1.界面编辑(res\layout\main.xml): &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/...

移动开发记录 185

Python爬虫实战:高效爬取CNKI知网文献数据的技术解析

本文将详细介绍如何使用Python最新技术构建一个高效的CNKI知网文献爬虫系统。我们将从爬虫基础知识讲起,逐步深入到高级反反爬技术、分布式爬取、智能解析等前沿内容。文章包含完整的代码实现,涵盖请求模拟、数据解析、持久化存储等关键环节,并特别针对CNKI的反爬机制提供解决方案。通过本文,读者将掌握构建专业级学术文献爬虫的全套技术栈。关键词:Python爬虫、CNKI爬取、反反爬技术、文献数据挖掘、Scrapy框架本文详细介绍了如何使用Python最新技术构建CNKI知网文献爬虫。

2201_76125261的博客 2075

[文件IO]使用java操作文件 及 字节流和字符流

Input 输入Output 输出输入输出并不是相对的, 以CPU为基准比如, 电脑可以通过网络下载文件, 也可以通过网络上传文件那么, 通过网络下载文件, 相当于从网卡到硬盘, 是input通过网络上传文件, 相当于从硬盘到网卡, 是output通过控制台, 读取数据到内存, 也是输入把数据打印显示到控制台上, 也是输出。

m0_73992740的博客 1040

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java IO操作 字节流&字符流

参考字节流与字符流的区别详解 1.基本概念 流:程序通过流来传输和保存数据 程序的输入输出都是以流的方式,流里保存的是字节。 Java IO通过Stream(流)来实现。Java中定义了两种类型的流:字节型,和字符型。 关于流,可以理解为是一种“数据的管道”。管道中流动的东西可以是基于字节,也可以是基于字符的等。就好像管道里面可以流动水,也可以流动石油一样。 输入流 和 输出流:程序 需...

dream_heheda的博客 475

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java io 字节流替换_Java IO操作 字节流&字符流

1.基本概念流:程序通过流来传输和保存数据 程序的输入输出都是以流的方式,流里保存的是字节。Java IO通过Stream(流)来实现。Java中定义了两种类型的流:字节型,和字符型。 关于流,可以理解为是一种“数据的管道”。管道中流动的东西可以是基于字节,也可以是基于字符的等。就好像管道里面可以流动水,也可以流动石油一样。输入流 和 输出流:程序 需要数据的时候,通过输入流来获取数据。程序 需要...

weixin_29310631的博客 336

java常见的IO字节流/字符流操作

InputStream和OutputStream字节流操作File文件 File file = new File("C://Users//fchen//Desktop//EPL4398046700991_大报文.txt"); InputStream inputStream = new FileInputStream(file); byte[] bytes = new byte[2048]; StringBuffer sb = new StringBuffer(); int len = 0; while ((

奔跑的菜鸡 212

Java IO操作—字节流(OutputStream、InputStream)和字符流(Writer、Reader)

流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序中需要数据的时候就用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入输出都是以流的形式保存的,流中保存的实际上全部是字节文件。 字节流和字符流 在java.io包中操作文件内容的主要有两大类:字节流和字符流,两类都分为输入和输出操作。在字节流中输出数据主要是使用OutputStream完成,输...

zjpp2580369的博客 1021

Java IO操作——字节流(OutputStream、InputStream)和字符流(Writer、Reader)

学习目标 掌握流的概念 掌握字节流与字符流的作用 掌握文件的标准操作步骤 掌握字节与字符操作的区别 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序中需要数据的时候就用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。 程序中的输入输出都是以流的形式保存的,流中保存的实际上全部是字节文件。 字节流与字符流 在java.io包中操作文

1万+

Java基础——IO(一)——IO流概述、字节流、字符流、流操作规律

第一讲 IO概述 一、概述 1、IO:Input Stream的缩写。 2、特点:       1)IO可以用来处理设备间的数据传输;       2)Java对数据的操作是通过流的方式;       3)Java用于操作流的对象都在io包中;       4

daybreak2015的博客 534

java byte 与操作_java的IO操作:字节流与字符流操作

流的概念程序中的输入输出都是以流形式,流中保存的实际上都是字节文件。字节流与字符流字节流的操作:1)输入:inputStream,2)输出:outPutStream;字符流的操作:1)输入主要使用:write类。2)输出主要使用:reader类。内容操作就四个类。操作流程:使用File类操作一定有路径问题,注意分隔符:实际上四个操作类都是抽象类(区别接口,抽象类的成员都是抽象,并且只能单继承,接口...

weixin_34846784的博客 330

java io编程实例_Java编程中字节流与字符流IO操作示例

IO流基本概念IO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用于操作流的对象都是在IO包上流按操作数据分为两种:字节流和字符流流按流向分为:输入流,输出流。字节流的抽象基类:InputStream,OutputStream字符流的抽象基类:Reader,Writer注:由这4个类派生出来的子类名称都是以其父类名作为子类名的后缀。如:InputStream的子类:File...

weixin_42513601的博客 146

Java IO编程——文件操作类/字节流/字符流

Java IO 操作主要指的是通过Java进行输入、输出操作,Java中所有操作类都存放在 java.io 包中,用户在使用时需要将操作导入此包。 所有的 IO 操作都在 java.io 包中进行定义,而且整个 java.io 包实际上就是五个类和一个接口。 |- 五个类:File、InputStream、OutputStream、Reader、Writer; |- 一个接口:Serializa...

Happy_bugYJ的博客 328

黑马程序员——Java基础---IO流(字符流、字节流、转换流、流操作规律)

简述: IO(Input Output) IO流用于处理设备之间的数据传输。(比如硬盘上的文件,内存中驻留的数据)IO流是用于操作数据的,数据的最常见体现形式是:文件。 Java对数据的数据的操作是通过流的方式。Java用于操作流的对象都在IO包中。流按操作数据分为两种:字节流和字符流。流按流向分为:输入流和输出流。 注意:流的操

中仔的博客 2993

一篇文章总结java IO流(File、字节流、字符流、特殊操作流)

1.File 1.1 File类概述和构造方法 File:它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的。 方法名 说明 public File(String pathname) 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例 public File

毕业势必进大厂的博客 476

Java IO操作之字节流与字符流

字节流与字符流 Java 程序中所有的数据都是以流的方式进行传输或者保存的。File 类虽然可以操作文件,但是并不是操作文件的内容,如果要进行内容的操作,只能通过两种途径完成:字节流与字符流。 字节流 --&amp;gt; byte类型,JDK 1.0提供 字节流输入InputStream输出OutputStream 字符流 --&amp;gt; 字符类型,JDK 1.1提供 字符流输入Reader输出Write...

Wayfreem的博客 332
上一篇: 字节流和字符流(重点)
下一篇: IO操作的一个例子(copy文件的命令)
跳跳
博客等级 码龄15年 7粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值