day065:IO流、字节流、字节流写数据

news2025/8/6 23:29:51

目录

一、IO流

1.IO流的目的

2.IO的表示

二、IO流的分类

1.按流向分

2.按数据类型分

三、字节流

1.字节流写数据

 2.字节流的注意事项

3.字节流写数据的三种方式

4.字节流写数据的两个问题

(1)字节流写数据如何换行?

(2)字节流写数据如何实现追加写入?

5.字节流try catch异常捕获


一、IO流

1.IO流的目的

  • 写数据:将数据写到文件中,实现数据永久化保存
  • 读数据:读取文件中已经存在的数据

2.IO的表示

I表示Input,数据从硬盘进内存的过程,称之为读

O表示Output,数据从内存到硬盘的过程,称之为写

(按照流的方向,是以内存为参照物再进行读写的)

 

二、IO流的分类

1.按流向分

  • 输入流:读数据(数据从硬盘流向内存)
  • 输出流:写数据(数据从内存流向硬盘)

2.按数据类型分

  • 字节流:可以操作所有类型的文件(包括音频、视频、图片等)
  • 字符流:只能操作纯文本文件(包括Java文件、txt文件等)

(纯文本文件:用记事本打开能读得懂的,就是纯文本文件)

三、字节流

1.字节流写数据

步骤:1.创建字节输出流的对象        2.写数据        3.释放资源

代码演示:

public class byteStreamDemo_01 {
    public static void main(String[] args) throws IOException {
        //1.创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("D:\\a.txt");
        //2.写数据
        fos.write(97);
        //3.释放资源
        fos.close();
    }

 2.字节流的注意事项

  • 如果文件不存在,它会自动创建出来
  • 如果文件是存在的,它会把文件清空
  • 写入的整数,对应码表中的字符

3.字节流写数据的三种方式

  • void write(int b)        一次只写一个字节数据
  • void write(byte[] b)    一次写一个字节数组数据
  • void write(byte[] b,int off,int len)   一次写一个字节数组的部分数据(第一个参数是数组名,第二个参数是从哪个索引开始写,第三个参数代表写几个)

代码示例:

public class byteStreamDemo_03 {
    public static void main(String[] args) throws IOException {
        //1.创建字节输出流对象
        FileOutputStream fos = new FileOutputStream("myByteStream\\a.txt");
        //2.写数据
        byte[] bys = {97, 98, 99, 100, 101, 102, 103};
        //第一个参数是数组名,第二个参数是从哪个索引开始写,第三个参数代表写几个
        fos.write(bys, 1, 2);

        //3.释放资源
        fos.close();
    }

4.字节流写数据的两个问题

(1)字节流写数据如何换行?

写完数据后加换行符:

windows:\r\n

Linux:\n

mac:\r

代码示例:

public class byteStreamDemo_04 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("myByteStream\\a.txt");
        fos.write(97);
        fos.write("\r\n".getBytes());
        fos.write(98);
        fos.write("\r\n".getBytes());
        fos.write(99);
        fos.write("\r\n".getBytes());
        fos.write(100);
        fos.write("\r\n".getBytes());
        fos.write(101);
        fos.close();
    }

(2)字节流写数据如何实现追加写入?

在创建文件输出流已指定的名称写入文件,第二个参数为续写开关,若写true,则打开续写开关,不会清空文件里面的内容,默认为false关闭

代码演示:
 

public class byteStreamDemo_05 {
    public static void main(String[] args) throws IOException {
        //在第二个参数是续写开关,写入true表示打开续写,默认是false关闭
        FileOutputStream fos = new FileOutputStream("myByteStream\\a.txt", true);
        fos.write(97);

        fos.write(98);

        fos.write(99);

        fos.write(100);

        fos.write(101);
        fos.close();
    }

5.字节流try catch异常捕获

public class byteStreamDemo_06 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = null;
        try {
            fos = new FileOutputStream("D:\\a.txt");
            fos.write(97);

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //finally里面的代码一定会被执行
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }
    }
}

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

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

相关文章

腾讯云服务器部署vue前端项目(Ubuntu+vue+nginx+nodejs+npm)

一、安装nodejs和npm sudo apt-get nodejs sudo apt-get npm 但是在安装npm后,输入npm --version时,会报错 此时,需要升级nodejs的版本,执行下面的两条命令 wget -qO- https://deb.nodesource.com/setup_16.x | sudo -E bash - …

兄弟兄弟,在git中的使用.gitignore忽略不想要提交的文件,了解一下呗

1. .gitignore的作用 在实际的工程项目中,除了项目本身的代码文件、配置文件外,还有一些文件或目录并不需要纳入版本管理中,如idea工具会在工程根目录生成一个.idea的目录、工程编译后生的target等。因此在提交代码文件的时候需要自动把这些目…

医学图像处理-安装nibabel包命令

医学图像处理-安装nibabel包命令问题与解决方案问题与解决方案 直接使用 pip install nibabel 出现如下报错: 尝试使用conda 命令安装,conda官网查命令: conda install -c conda-forge nibabel conda install -c conda-forge/label/gcc7 ni…

编译 - Make 命令教程 - 学习/实践

1.应用场景 主要用于学习和使用make命令进行软件编译安装。 2.学习/操作 1.文档阅读 Make 命令教程 - 阮一峰的网络日志 Make- GNU Project - Free Software Foundation 2.整理输出 2.1 什么是make命令? Make 是最常用的构建工具,诞生于1977年&#xff…

python正则表达式实战——获取图片

我最近自学了一段时间爬虫,感觉挺有意思的,逛网页的时候,无意间发现了一个壁纸网站,我就萌生了一个想法,看能不能下下来,说干就干。 前言 目标网站:首先我们要知道我们的目标位置。 编程语言…

Java Spring-AOP动态代理-JDK和CGlib实现

Java Spring-AOP CGlib和JDK动态代理实现 编码是为了解决生活中的问题,譬如现在我想用筷子吃饭的时候看手机,那么首先会有两个对象。 现在如果是面向对象编程思想,我们会new一个筷子对象,new一个手机对象,然后先调用…

Linux 命令 —— feh

Linux 命令 —— feh1. 介绍2. 模式-重要!2.1 模式对比3. 参数说明3. 常见使用方式1. 介绍 本教程基于版本 feh 2.23.2. 命令:feh feh是一个基于模式的图像查看器。虽然它也可以由(图形化的)文件管理器启动以查看图像,但它特别针对需要快速…

函数传址,但无法改变xy数据问题

目录 问题 正确代码 两者区别 开启调试 设置监视的变量 逐过程调试 在自定义函数中调试 跳出自定义函数 对正确的代码进行调试 进入自定义函数 跳出自定义函数 为什么说编译器有问题 问题 今天遇到一个很有意思的问题分享一下。他写了一个交换数据的函数&#xf…

看一眼就会的k8s权限管理手把手教学

Kubernetes Kubernetes使用RBAC授权Kubernetes一、API概述1.Role 和 ClusterRole1.RoleBinding和ClusterRoleBinding二、使用步骤(Role及RoleBinding为例)1、创建user用户证书2、创建集群、用户1、创建集群配置文件2、创建基于集群和新用户的上下文3、给…

【java进阶02:抽象类和接口】类与类之间的关系 抽象类与接口的区别

目录 抽象类 接口 抽象类 什么是抽象类 /*类————>对象 :实例化 对象————>类 :抽象抽象类:1、什么是抽象类?类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类类本身是不存在的&…

python 实现MAC泛洪与ARP欺骗

声明:本文章的一切内容仅用于交流与学习 目录 一、Python scapy 二、MAC泛洪 三、ARP欺骗 一、Python scapy scapy提供了构造、发送、接收、分析数据包的功能 scapy的内容很多这里只说明要用到的内容 RandMAC:自动生成一个随机的MAC地址 packet Et…

【SpringBoot】idea创建SpringBoot项目及注解配置相关应用

文章目录SpringBoot:一、简言二、SpringBoot作用三、核心功能四、创建springBoot项目1、新建SpringBoot(maven基础下)2、next---选版本导jar包3、创建后的pom.xml4、SpringBoot启动类六、测试项目1.项目构建:2.数据源注入dao层---…

【爬虫系列】Python爬虫实战--招聘网站的职位信息爬取

一、分析 1. 需求分析 从网上找工作,大家一般都会通过各种招聘网站去检索相关信息,今天利用爬虫采集招聘网站的职位信息,比如岗位名称,岗位要求,薪资,公司名称,公司规模,公司位置&…

状态机总结(简洁)

一、概念 状态机简写为 FSM(Finite State Machine),也称为同步有限状态机,我们一般简称为状态机,之所以说“同步”是因为状态机中所有的状态跳转都是在时钟的作用下进行的,而“有限”则是说状态的个数是有…

【面试题】绝对定位和相对定位

absolute和relative分别依据什么定位&#xff1f; relative依据自身定位absolute依据最近一层的定位元素定位&#xff0c;如果上层没有定位元素&#xff0c;则依据body定位 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&…

学C/C++想提升功底 可以花点时间看看这篇博客---C语言程序环境和预处理

本篇博客介绍了C语言程序环境和预处理.主要包含程序的翻译和运行环境和 各种预处理操作:预定义符号.各种#define 用法 undef的使用条件编译的使用 头文件包含指令 C语言程序环境和预处理一.程序的翻译环境和执行环境1.翻译环境2.运行环境二.预处理详解1.预定义符号2.#define的用…

Winform 自动升级程序

抽时间整理下升级这块的功能&#xff0c;并封装一个升级工具包。 作为winform 程序员都有一个C/S端程序绕不过的问题。那就是如何升级程序&#xff1f; 程序升级两种1.启动时强制更新 2.自动、手动获取更新&#xff0c;并确认是否升级。 今天咱们介绍&#xff0c;自动或者手…

路由进阶:route-policy实验配置

实验拓扑 网络拓扑及IP编址如上图所示&#xff1b;R1、R2运行RIPv2&#xff0c;R2、R3运行OSPF。R1上开设三个Loopback接口&#xff0c;地址分别是192.168.1.1/24、192.168.2.1/24及192.168.3.1/24&#xff0c;R1并没有在这三个接口上激活RIPv2&#xff1b; 实验需求 R1在RIP…

[附源码]计算机毕业设计JAVA航空售票管理系统

[附源码]计算机毕业设计JAVA航空售票管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

智慧安防解决方案-最新全套文件

智慧安防解决方案-最新全套文件一、建设背景二、思路架构三、建设方案二、获取 - 智慧安防全套最新解决方案合集一、建设背景 随着经济的发展和城市建设速度的加快&#xff0c;全球各地区的安全问题接踵而至&#xff0c;我国正进入“突发公共事件的高发期”和“社会高风险期”…