JAVA(IO流-字节流)day 7.29

server/2024/12/22 15:13:42/

ok家人们今天继续学习IO流,

一.字节流

存储时,都是使用二进制来保存。

2.1 字节输出流OutputStream

 OutputStream是字节输出流的超类(父类),

方法   

java">public abstract void write(int b):
一次写一个字节数据。public void write(byte[] b):
一次写一个字节数组数据。public void write(byte[] b, int off, int len) :
一次写一个字节数组的部分数据public void close():
关闭此输出流并释放与此流相关联的任何系统资源。

下面是他的子类FileOutputStream。

2.2 FileOutputStream

FileOutputStream 类的概述
文件输出流,用于将数据写入文件中。
FileOutputStream 类的构造方法
java">public FileOutputStream(File file):创建文件输出流以写入由指定
的 File对象表示的文件。public FileOutputStream(String name): 创建文件输出流以指定
的名称写入文件。FileOutputStream fos = new FileOutputStream('文件地址')//数据写入文件
fos.wirte();//释放资源
fos.close();
java">public class DemoTest {public static void main(String[] args) throws
Exception {//1.创建流对象FileOutputStream fis= new
FileOutputStream("java_0724_0708\\hello.txt");//2.操作,写字节数组//byte[] bs={97,98,99,100,101};String str="你好";byte[] bytes = str.getBytes();//[-28, -67,
-96, -27, -91, -67]fis.write(bytes);//3.关闭流,释放资源fis.close();}
}
java">public class DemoTest {public static void main(String[] args) throws
Exception {//1.创建流对象FileOutputStream fis= new
FileOutputStream("java_0724_0708\\hello.txt");//2.操作 写字节数组String str="你好";//[-28, -67, -96, -27, -91, -67]//utf8编码一个中文占3个字节,gbk编码一个中文占2个字
节fis.write(str.getBytes(),0,6);//3.关闭流 释放资源fis.close();}
}

2.3 数据换行与追加

数据追加续写
java">public FileOutputStream(String name, boolean append):
创建文件输出流以指定的名称写入文件。如果第二个参数为true ,
不会清空文件里面的内容FileOutputStream fos = new FileOutputStream("/相对路径/绝对路径",true);

各个系统的换行符

java">windows : \r\n
linux : \n
mac : \r

2.4 字节输入流InputStream

InputStream是所有字节输入流的父类,

InputStream构造方法

java">public abstract int read(): 每次可以读取一个字节的数据,提
升为int类型,读取到文件末尾,返回 -1。public int read(byte[] b): 每次读取b的长度个字节到数组中,
返回读取到的有效字节个数,读取到末尾时,返回 -1。public void close():关闭此输入流并释放与此流相关联的任何系
统资源。

下面是他的子类FileInputStream类。

2.5 FileInputStream

文件输出流,从文件读取数据。

FileInputStream 类的构造方法
java">FileInputStream(File file): 
通过打开与实际文件的连接来创建一个FileInputStream 
,该文件由文件系统中的文件对象 file命名。FileInputStream(String name): 
通过打开与实际文件的连接来创建一个 FileInputStream ,
该文件由文件系统中的路径名 name命名。FileInputStream fis = new FileInputStream("文件路径");

2.6 读取字节

java">FileInputStream fis = new FileInputStream("文件路径");fis.read();//每次读取一个字节方法:读取文件所有内容int len;while((len=fis.read())!=-1){System.out.println(len);
}

2.7 读字节数组

java">FileInputStream fis = new FileInputStream("文件路径");fis.read();//每次读取一个字节方法:读取文件所有内容
byte[] buf = new byte[1024];int len;while((len=fis.read(buf))!=-1){System.out.println(buf,0,len);
}

.字节缓冲流

字节缓冲流 BufferedInputStream BufferedOutputStream
字符缓冲流 BufferedReader BufferedWriter
方法
java">public BufferedInputStream(InputStream in) :创建一个 新的
缓冲输入流。public BufferedOutputStream(OutputStream out): 创建一个
新的缓冲输出流。
java">String src = "文件路径";
String dest= "文件路径";
try(BufferedInputStream bis = new BufferedInputStream(src);BufferedOutputStream bos = new BufferedOutputStream(dest);
){//操作}catch (IOException e){e.printStackTrace();}

.Properties集合

4.1 Properties类的概述

它使用键值结构存储数据,继承于 Hashtable

4.2 Properties类的构造方法

java">public Properties() :创建一个空的属性列表。Properties prop = new Properties();

4.3 Properties类存储方法

java">public Object setProperty(String key, String value): 
保存一对属性。 public String getProperty(String key) :
使用此属性列表中指定的键搜索属性值。public Set stringPropertyNames() :
获取所有键的名称的集合。Properties prop = new Properties();properties.setProperty("张三", "北京");Set<String> strings = properties.stringPropertyNames();for (String key : strings ) {System.out.println(key+" --
"+properties.getProperty(key));
4.4 Properties 类与流相关的方法
java">public void load(Reader reader):以字符流形式 , 把文件中的
键值对, 读取到集合中public void store(OutputStream out, String comments):把集
合中的键值对,以字节流形式写入文件中 , 参数二为注释public void store(Writer writer, String comments):把集合中
的键值对,以字符流形式写入文件中 , 参数二为注释
java"> Properties prop=new Properties();//读取 db.properties属性配置文件FileInputStream fis=newFileInputStream("文件路径");prop. Load(fis);// 关闭流,释放资源fis.close();System.out.println(prop);
java">Properties prop = new Properties();//存储元素prop.setProperty("name","zhangsan");prop.setProperty("age","18");//把集合中的数据,写入到配置文件FileOutputStream fos=new
FileOutputStream("文件路径");prop. Store(fos,"注释");// 关闭流fos.close();}
}

4.5 ResourceBundle(抽象类)工具类

可以用子类 PropertyResourceBundle 来读取以.properties 结尾的配置文件
ResourceBundle 中常用方法:
java">String getString(String key) : 通过键,获取对应的值ResourceBundle rb = ResourceBundle.getBundle("##");//不用写后缀名properties
java">文件username=zhangsan
password=123456
java">       String username = rb.getString("username");String password = rb.getString("password");System.out.println(username);//zhangsanSystem.out.println(password);//123456

ok了家人们明天见。


http://www.ppmy.cn/server/93235.html

相关文章

PHP框架详解之Symfony框架

一、框架概述 起源与开发者&#xff1a;Symfony由SensioLabs&#xff08;现为Symfony公司&#xff09;开发&#xff0c;最初由Fabien Potencier于2005年创建。功能定位&#xff1a;Symfony通过提供一套可重用的组件和标准化的框架&#xff0c;帮助开发者快速构建Web应用、API、…

一万亿token!34亿张图像,扩大10倍!史上最大开源多模态数据集MINT-1T发布!

众所周知&#xff0c;现在训练AI最需要的是什么&#xff1f; 数据&#xff0c;数据&#xff0c;还是数据。——毕竟只有让AI学好了&#xff0c;AI才能好好地回答你的问题&#xff0c;否则就会答非所问。 但是喂给AI的数据&#xff0c;现在和GPU一样&#xff0c;成了紧缺资源。…

ChatTTS(文本转语音) 一键本地安装爆火语音模型

想不想让你喜欢的文章&#xff0c;有着一个动听的配音&#xff0c;没错&#xff0c;他就可以实现。 ChatTTS 是一款专为对话场景设计的文本转语音模型&#xff0c;例如 LLM 助手对话任务。它支持英语和中文两种语言。 当下爆火模型&#xff0c;在Git收获23.5k的Star&#xff…

在 Git 中完全同步分支至主分支状态及团队成员同步其本地分支至远程仓库的最新状态,同时保留未提交的更改。

在 Git 中完全同步分支至主分支状态及团队成员可以安全地同步其本地分支至远程仓库的最新状态&#xff0c;同时保留未提交的更改。 同步分支步骤 在 Git 工作流中&#xff0c;有时需要将一个分支的状态完全同步到主分支&#xff08;通常是 main 或 master&#xff09;。这种情…

redis:Linux安装redis,redis常用的数据类型及相关命令

1. 什么是NoSQL nosql[not only sql]不仅仅是sql。所有非关系型数据库的统称。除去关系型数据库之外的都是非关系数据库。 1.1为什么使用NoSQL ​ NoSQL数据库相较于传统关系型数据库具有灵活性、可扩展性和高性能等优势&#xff0c;适合处理非结构化和半结构化数据&#xff0c…

【Spring Framework】使用XML配置文件定义Bean及其依赖注入方式

在 Spring Framework 中&#xff0c;使用 XML 配置文件来定义 Bean、配置依赖关系以及管理应用程序的行为是一个经典且有效的方法。尽管在现代开发中注解和 Java 配置&#xff08;基于 Java 的配置类&#xff09;正变得越来越流行&#xff0c;XML 配置依然在某些场景下具有其优…

2024电赛H题参考方案(+视频演示+核心控制代码)——自动行驶小车

目录 一、题目要求 二、参考资源获取 三、TI板子可能用到的资源 1、环境搭建及工程移植 2、相关模块的移植 四、控制参考方案 1、整体控制方案视频演示 2、视频演示部分核心代码 五、总结 一、题目要求 小编自认为&#xff1a;此次控制类类型题目的H题&#xff0c;相较于往年较…

新手必看:Elasticsearch 入门全指南

Elasticsearch 入门介绍 Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;广泛应用于处理大规模数据和实时搜索需求。它基于 Apache Lucene 构建&#xff0c;具备高可扩展性和分布式特性&#xff0c;能够快速、可靠地存储、搜索和分析大量数据。本文将介绍 Elasti…