IO流操作

devtools/2025/2/2 21:29:03/

目录

一、字符集

常见字符集

编码、解码操作

二、IO流

FileInputStream

FileOutputStream

FileReader

FileWriter

三、打印流

PrintStream


一、字符集

常见字符集

我们的计算机底层是不可以直接存储字符的,计算机中底层只能存储二进制(0、1),同时二进制是可以转换成十进制的。
结论:计算机底层是可以表示十进制编号。计算机可以给人类字符进行编号存储,这套编号规则就是字符集

ASCll字符集: ASCll(American Standard Code for Information Interchange),美国信息交换标准代码,包括了数字、英文、符号。
ASCll使用1个字节存储一个字符,一个字节是8位,一共可以表示128个字符信息,对于英文,数字是够用的。

GBK:windows系统默认的码表。兼容ASCll码表,也包含了几万个汉字,并支持繁体汉字以及部分日韩文字。
注意:GBK是中国的码表,一个中文以两个字节的形式存储。但不包含世界上所有国家的文字。

Unicode码表:unicode(统一码,万国码)是计算机科学领域里的一项业界字符编码标准,容纳世界上大多数国家的所有常见的文字和符号。
由于Unicode会先通过UTF-8、UTF-16、以及UTF-32编码成二进制在存储到计算机中,最常见的是UTF-8.

注意:
1.Unicode是万国码,以UTF-8编码后一个中文一般以三个字节的形式存储。
2.UTF-8也兼容ASCll编码表
3.我们正常情况下应该使用UTF-8的字符集编码
4.编码前和编码后的字符集需要保持一致,否则会出现乱码
5.英文和数字在任何编码中都不会乱码。

编码、解码操作

String编码:

方法作用
byte[] getBytes()使用平台默认字符集将String编码为字节,存储到数组中
byte[] getBytes(String charsetName)使用指定字符集将String编码为字节,存储到字节数组中

String解码:

方法作用
String(byte[] bytes)使用平台默认编码来解码字节数组来构造String
String(byte[] bytes,String charsetName)通过指定字符集解码指定字节数组来构造String
public static void main(String[] args) {String name = "abcefg";byte[] bytes = name.getBytes();System.out.println(bytes.length);System.out.println(Arrays.toString(bytes));}

二、IO流

IO流也称为输入,输出流,就是用来读写数据的。
I:表示input,数据从硬盘文件读入到内存的过程,称之输入(读)
O: 表示output,数据从内存写入硬盘文件的过程,称之输出(写)

但是我们这里类都是抽象类,是不能直接用的,于是我们提供了操作文件的实现类

虽然这里的类很多,但是具有非常强的规律性,核心就是四个操作:
1.打开文件(构造对象)
2.关闭文件(close)
3.读文件(read),只针对 InputStream / Reader
4.写文件(write),只针对OutputStream / Writer

FileInputStream

方法作用
FileInputStream(File file)利用 File 构造文件输入流
FileInputStream(String name)利用文件路径构造文件输入流
File file = new File("D:/temp/java114/abc.txt");
public static void main(String[] args) throws IOException {//创建一个文件字节输入流管道与源文件接通InputStream inputStream = new FileInputStream("./data.txt");//按一次读一个字节的方式读取int a1 = inputStream.read();System.out.println((char)a1);int a2 = inputStream.read();System.out.println((char)a2);int a3 = inputStream.read();System.out.println((char)a3);int a4 = inputStream.read();System.out.println(a4);}

FileOutputStream

我们刚刚介绍了从硬盘读取到内存的文件字节输入流,现在介绍从内存写入到硬盘上的字节输出流。

方法作用
FileOutputStream(File file)创建字节输出流与源文件对象接通
FileOutputStream(File file,boolean append)创建字节输出流与源文件对象接通,可追加数据
FileOutputStream(String filepath)创建字节输出流与源文件路径接通
FileOutputStream((String filepath),boolean append)创建字节输出流与源文件路径接通,可追加数据
方法作用
flush()刷新流,还可以继续写数据
close()关闭流,释放资源,再关闭之前先刷新流。一旦关闭,就不能写数据
public class Demo_203_OutputStream {public static void main(String[] args) throws IOException {// 通过文件路径创建一个输出流FileOutputStream outputStream = new FileOutputStream("D:\\temp\\java114\\output_stream.txt");// 写入内容到文件,以字节的形式写入文件outputStream.write(97);  // aoutputStream.write(98);  // boutputStream.write(99);  // coutputStream.write(13);outputStream.write(10);outputStream.write(-26);outputStream.write(-120);outputStream.write(-111);outputStream.write('\n');// 刷新一下缓冲区outputStream.flush();// 关闭流outputStream.close();}

FileReader

字符输入流:我们刚才所介绍的字节流,对于操作中文数据不太友好,我们现在来介绍一个非常针对中文操作的流对象|

方法作用
FileReader(File file)创建字符输人流与源文件对象接通
FileReader(File file,Charset charset)创建字符输人流与源文件对象接通,指定字符集
FileReader(String fileName)创建字符输人流与源文件路径接通
FileReader(String fileName,Charset charset)创建字符输人流与源文件路径接通,指定字符集
public class Demo_204_FileReader {public static void main(String[] args) throws IOException {// 创建一个字符流FileReader reader = new FileReader("D:\\temp\\java114\\abc.txt");// 循环读取while (true) {// 读取一个字符int data = reader.read();// 读取完成,达到退出条件if (data == -1) {break;}// 打印结果,一个字符一个字符的打印System.out.println(data);}// 关闭流reader.close();}
}

FileWriter

文件字符输出流

方法作用
FileWriter(File file)创建字符输出流管道与源文件对象接通
FileWriter(File file,boolean append)创建字符输出流管道与源文件接通,可追加数据
FileWriter(String filepath)创建字符输出流管道与源文件路径接通
FileWriter(String filepath,boolean append)创建字符输出流管道与源文件路径接通,可追加数据
public class Demo_205_FileWriter {public static void main(String[] args) throws IOException {// 定义一个字符输出流FileWriter writer = new FileWriter("D:\\temp\\java114\\file_writer.txt");// 写入具体的字符writer.write("hello world!!!");writer.write('\n');writer.write("你好世界!!!");// 强制刷新缓冲区writer.flush();// 关闭流writer.close();}

三、打印流

PrintStream

方法作用
PrintStream(OutputStream os)打印流直接通向字节输出流管道
PrintStream(File f)打印流通向文件对象
PrintStream(String filepath)打印流通向文件路径
print(Xxx xxx)打印任意类型的数据

PrintWriter

方法作用
PrintWriter(OutputStream os)打印流通向字节输出流管道
PrintWriter(Writer w)打印流通向字符输出流管道
PrintWriter(File f)打印流通向文件对象
PrintWriter(String filepath)打印流通向文件路径
print(Xxx xxx)打印任意类型数据
public class Demo_207_PrintWriter {public static void main(String[] args) throws IOException {// 创建一个输出流FileOutputStream outputStream = new FileOutputStream("D:\\temp\\java114\\print_writer.txt");// 根据输出流,创建一个PrintWriter对象,用于写入字符串PrintWriter printWriter = new PrintWriter(outputStream);// 写入内容printWriter.println("hello world!!!");printWriter.println("这是一个简便方法,你好世界!!!");printWriter.printf("%s:%d", "单价", 5);// 强制刷新缓冲区printWriter.flush();// 关闭资源printWriter.close();outputStream.close();}
}

PrintWriter 和 PrintStream的区别
1.打印数据功能一模一样,使用方便,性能高效
2.PrintStream继承字节输出流OutputStream,支持写字节数据的方法
3.PrintWriter继承字符输出流Writer,支持写字符数据的方法


http://www.ppmy.cn/devtools/155542.html

相关文章

软件工程概论试题二

一、单选 1. 下面的说法是哪种视角对系统进行建模?“对系统与环境之间或系统构件之间的交互进行建模 A. 外部视角 B.交互式视角 C.结构化视角 D.行为视角 正答:B 2.下面描述是从哪种视角对系统进行建模的? “对系统的体系结构和系统处理的数据的结构建模”。 A.外部视角 B.交…

PostgreSQL技术内幕24:定时任务调度插件pg_cron

文章目录 0.简介1.基础知识2.pg_cron安装使用方式2.1 安装pg_cron2.2 使用方式 3.实现原理3.1 启动过程3.2 任务添加和管理3.3 调度过程3.4 执行原理 0.简介 pg_cron是PostgreSQL中的一个简单的基于cron的任务调度插件,本文将从其基础知识(Linux中Cron的…

PostgreSQL 数据查询操作(排序、筛选、连接、分组、子查询)

(1)排序查询与筛选查询操作 排序查询使用ORDER BY,对某个表中的列1按照列升序(ASC,默认升序)或降序(DESC)排序,排序后展示列1和列2两列。此外,也可以按照多列…

MySQL数据类型转换应注意什么?

文章目录 1. **隐式转换**2. **显式转换**3. **数据截断**4. **字符集与排序规则**5. **日期和时间转换**6. **数值转换**7. **NULL 处理**8. **性能影响**9. **错误处理**10. **函数选择**示例总结 在 MySQL 中进行数据类型转换时,需要注意以下几个关键点&#xff…

基于Cipher的Java加密工具类

一、什么是Cipher Cipher是一种用于加密和解密信息的算法或方法。它将原始的明文转化为密文,从而保护信息的安全性和机密性。使用密码学中的数学原理和技术,Cipher可以对数据进行加密处理,使其在传输或存储过程中对未授权的访问者不可读。在必…

LVGL+FreeRTOS实战项目:智能健康助手(lcd篇)

1.8寸彩色TFT显示屏简介 接线图 我们选用的是分辨率为128*160的彩色显示屏,采用的SPI接口,通过我们STM32的SPI外设,来和我们的屏幕进行通信,以显示我们需要显示的图片。 软件部分 #include "lcd_driver.h"//液晶IO初始…

2015年蓝桥杯第六届CC++大学B组真题及代码

目录 1A:奖券数目(填空_简单枚举) 2B:星系炸弹(填空_日期计算) 3C:三羊献瑞(填空_全排列) 4D:格子中输出(代码填空) 5E&#xff1…

C# 拖入文件 只能拖入txt文件

要实现只能将 .txt 文件拖入 Button 控件(如 button1)并获取其路径,可以在之前的基础上添加文件类型的检查逻辑。以下是具体实现步骤和示例代码: 1. 创建 Windows Forms 项目 打开 Visual Studio,创建一个新的 Window…