JAVA(IO流-字节流)day 7.29

news2025/4/7 8:03:01

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

一.字节流

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

2.1 字节输出流OutputStream

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

方法   

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 类的构造方法
public FileOutputStream(File file):创建文件输出流以写入由指定
的 File对象表示的文件。

public FileOutputStream(String name): 创建文件输出流以指定
的名称写入文件。

FileOutputStream fos = new FileOutputStream('文件地址')

//数据写入文件
fos.wirte();

//释放资源
fos.close();
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();
  }
}
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 数据换行与追加

数据追加续写
public FileOutputStream(String name, boolean append):
创建文件输出流以指定的名称写入文件。如果第二个参数为true ,
不会清空文件里面的内容

FileOutputStream fos = new FileOutputStream("/相对路径/绝对路径",true);

各个系统的换行符

windows : \r\n
linux : \n
mac : \r

2.4 字节输入流InputStream

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

InputStream构造方法

public abstract int read(): 每次可以读取一个字节的数据,提
升为int类型,读取到文件末尾,返回 -1。

public int read(byte[] b): 每次读取b的长度个字节到数组中,
返回读取到的有效字节个数,读取到末尾时,返回 -1。

public void close():关闭此输入流并释放与此流相关联的任何系
统资源。

下面是他的子类FileInputStream类。

2.5 FileInputStream

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

FileInputStream 类的构造方法
FileInputStream(File file): 
通过打开与实际文件的连接来创建一个FileInputStream 
,该文件由文件系统中的文件对象 file命名。

FileInputStream(String name): 
通过打开与实际文件的连接来创建一个 FileInputStream ,
该文件由文件系统中的路径名 name命名。

FileInputStream fis = new FileInputStream("文件路径");

2.6 读取字节

FileInputStream fis = new FileInputStream("文件路径");

fis.read();//每次读取一个字节


方法:读取文件所有内容

int len;

while((len=fis.read())!=-1){

    System.out.println(len);
}

2.7 读字节数组

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
方法
public BufferedInputStream(InputStream in) :创建一个 新的
缓冲输入流。

public BufferedOutputStream(OutputStream out): 创建一个
新的缓冲输出流。
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类的构造方法

public Properties() :创建一个空的属性列表。

Properties prop = new Properties();

4.3 Properties类存储方法

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 类与流相关的方法
public void load(Reader reader):以字符流形式 , 把文件中的
键值对, 读取到集合中

public void store(OutputStream out, String comments):把集
合中的键值对,以字节流形式写入文件中 , 参数二为注释

public void store(Writer writer, String comments):把集合中
的键值对,以字符流形式写入文件中 , 参数二为注释
 Properties prop=new Properties();
       //读取 db.properties属性配置文件
       FileInputStream fis=new

FileInputStream("文件路径");
       prop. Load(fis);

       // 关闭流,释放资源
       fis.close();

       System.out.println(prop);

       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 中常用方法:
String getString(String key) : 通过键,获取对应的值

 ResourceBundle rb = ResourceBundle.getBundle("##");//不用写后缀名properties
文件

username=zhangsan
password=123456
       String username = rb.getString("username");
       String password = rb.getString("password");
       System.out.println(username);//zhangsan
       System.out.println(password);//123456

ok了家人们明天见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960125.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何实现无公网IP远程访问本地内网部署的Proxmox VE虚拟机平台

文章目录 1. 局域网访问PVE2. 安装Cpolar 工具3. 创建PVE公网地址4. 远程访问PVE5. 设置固定域名6. 固定地址访问 Proxmox VE是一个完全开源的平台&#xff0c;基于Debian Linux&#xff0c;用于运行虚拟机和容器。为了提供最大的灵活性&#xff0c;它支持两种虚拟化技术&#…

超简单!证件照换底色一分钟速成技巧

证件照的底色一般情况下分为&#xff1a;蓝色、红色、白色 证件照的尺寸也分为&#xff1a;一寸、两寸、大一寸、小二寸等 不同的文件或需求场景下对于证件照的底色和尺寸都有不同的要求&#xff0c;想要更方便的变更证件照可以先保存一版电子版&#xff0c;然后每次在初始版…

C++使用Boost库对时间的操作

0x00、获取当前时间&#xff0c;时间格式为yyyy-MM-dd hh:mm:ss.zzz std::string GetCurrentTime() {// 使用本地时间boost::posix_time::ptime now boost::posix_time::microsec_clock::local_time();// 获取毫秒部分boost::posix_time::time_duration td now.time_of_day(…

【数据结构】——双链表的实现(赋源码)

双链表的概念和结构 双链表的全称叫做&#xff1a;带头双向循环链表 它的结构示意图如下 注意&#xff1a;这⾥的“带头”跟前⾯我们说的单链表的“头结点”是两个概念&#xff0c;实际前⾯的在单链表阶段称呼不严谨&#xff0c;但是为了读者们更好的理解就直接称为单链表的头…

学习008-02-04-09 Assign a Standard Image(分配标准图像)

Assign a Standard Image&#xff08;分配标准图像&#xff09; This lesson explains how to associate an entity class with a standard image from the DevExpress.Images assembly. This image illustrates the entity class in the following sections of the UI: 本课介…

C# Unity 面向对象补全计划 之 访问修饰符

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列旨在通过补全学习之后&#xff0c;给出任意类图都能实现并做到逻辑上严丝合缝

LabVIEW安装DSC模块 转自三景页593

打开NI Package Manager&#xff0c;找到LabVIEW and Drivers 找到自己需要的版本进行下载 搜索需要的模块进行下载 以DSC模块为例&#xff0c;下载右边的安装即可 最后用激活工具激活即可使用

【AI大模型】:结合wxauto实现智能微信聊天机器人

文章目录 &#x1f9d0;一、wxauto简介&#x1f3af;二、wxauto的主要功能&#x1f4e6;三、wxauto的安装与使用1. wxauto的安装2. wxauto的简单使用3. wxauto的消息对象 &#x1f4bb;四、wxauto结合大模型实现简单的聊天机器人三、完整代码 &#x1f9d0;一、wxauto简介 wxa…

(day28)leecode——有效括号

描述 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())()","()(())","…

视频转场SDK,高效集成,提升视频制作效率

传统的视频制作方式往往受限于单一的转场效果&#xff0c;难以在瞬息万变的市场中脱颖而出。美摄科技&#xff0c;作为视频处理技术的领航者&#xff0c;以其革命性的视频转场SDK&#xff0c;为企业视频创作带来了前所未有的创意与效率飞跃。 重塑转场艺术&#xff0c;激发创意…

el-table 表格列宽自适应

思路&#xff1a;获取当前列的最长数据和表头名称比较&#xff0c;取大值赋值给宽度。 效果图 自适应前 自适应后 自适应方法 // col 里面包含了表头字段和名称&#xff0c;list 是表格数据 columnWidth(col, list) {let prop col.prop, lab col.lab;let width 90; // 设…

数据结构——双向链表及其总结

1.概述 链表根据是否带头、是否双向、是否循环可以分为八种&#xff0c;双向链表是典型的带头双向循环链表。 双向链表的结构可以表示为下&#xff1a; struct ListNode {int data;struct ListNode* next;struct ListNode* prev; } 2.双向链表的实现过程及其解析 双向链表…

Redis 内存淘汰策略

Redis 作为一个内存数据库&#xff0c;必须在内存使用达到配置的上限时采取策略来处理新数据的写入需求。Redis 提供了多种内存淘汰策略&#xff08;Eviction Policies&#xff09;&#xff0c;以决定在内存达到上限时应该移除哪些数据。

如何理解Java的内存模型

希望文章能给到你启发和灵感~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏 支持一下博主吧~ 阅读指南 开篇说明一、内存相关基础了解1.1 硬件的内存架构1.2 缓存一致性问题1.3 内存模型的出现二、Java内存模型2.1 组成部分2.2 模型特性2.4 As-if-serial语义与Happens-bef…

【2024蓝桥杯/C++/B组/前缀总分】

题目 代码 #include<bits/stdc.h> using namespace std;// 定义常量N为210&#xff0c;用于数组的大小 const int N 210; // 声明n为整型变量&#xff0c;用于存储字符串的数量 int n; // 声明一个字符串数组str&#xff0c;大小为N&#xff0c;用于存储字符串 string …

pda条码扫描手持机,数据采集器助力景区售检票

随着科技的发展&#xff0c;景区也在往信息化方向发展&#xff0c;景区为了提升售票、检票入园效率&#xff0c;可采用pda条码扫描手持机售检票系统。pda条码扫描手持机是一种便携式的检票设备&#xff0c;可以随时随地使用。配备5.5寸高清大屏,1440*720分辩率&#xff0c;多点…

安防监控视频融合汇聚平台EasyCVR创建新用户时没有摄像机权限,是什么原因?

国标GB28181/RTSP/ONVIF视频管理系统EasyCVR视频汇聚平台&#xff0c;是一个具备高度集成化、智能化的多协议接入视频监控汇聚管理平台&#xff0c;拥有远程视频监控、录像、云存储、录像检索与回放、语音对讲、云台控制、告警、平台级联等多项核心功能。EasyCVR安防监控视频系…

docker笔记5-数据卷

docker笔记5-数据卷 一、数据卷1.1 定义1.2 本质1.3 特点 二、使用数据卷三、案例2.1 安装Mysql 四、匿名挂载和具名挂载4.1 匿名挂载4.2 具名挂载 五、三种挂载方式 一、数据卷 1.1 定义 Docker 容器数据卷是一个可用于存储数据的特殊目录&#xff0c;存在于一个或多个容器的…

免费【2024】springboot 出租车管理网站的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

unity2D游戏开发15自我防御

创建子弹 Ammo类来表示自子弹 创建一个GameObject,并命名为AmmoObject 将Ammo.png拖入Object中 属性设置,点击apply 将SpriteRenderer组件添加到AmmoObject,将Sorting Layer设置为Characters,并将Sprite属性设置为Ammo 将CircleCollider2D添加到AmmoObject。确保选中Is Tr…