【Java寒假打卡】Java基础-字节输入流和字节输出流

news2024/12/27 10:16:32

【Java寒假打卡】Java基础-字节输入流和字节输出流)

    • 概述
    • 字节输出流快速入门
    • 字节输出流的注意事项
    • 输出字节流-一次性写多个数据
    • 字节输出流的两个问题
    • try-catch-finally捕获异常
    • 字节输入流写数据
    • 字节流读数据 一次性读取多个数据
    • 案例、文件复制
    • 使用字节数组进行拷贝文件

概述

在这里插入图片描述

字节输出流快速入门

在这里插入图片描述

package com.hfut.edu.test9;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class test10 {
    public static void main(String[] args) throws IOException {
        // 创建字节输出流的对象  -- 告诉JVM要往哪一个文件中写数据
        FileOutputStream fos = new FileOutputStream("D:\\heima\\1.txt");// 直接传入路径 创建字节输出流对象

        // 传入File对象  创建字节输出流对象
        FileOutputStream fos1 = new FileOutputStream(new File("D:\\heima\\1.txt"));

        // 写数据
        fos.write(97);

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

    }
}

字节输出流的注意事项

  • 如果文件不存在 创建该文件
  • 如果文件存在 写入数据的时候 直接清空
  • 写出的整数 实际是ASCII值 对应码表的一个字符
  • 每次使用完输出流,必须释放该资源

输出字节流-一次性写多个数据

在这里插入图片描述

package com.hfut.edu.test9;

import java.io.FileOutputStream;
import java.io.IOException;

public class test11 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("D:\\heima\\1.txt");// 字节输出流

        byte[] bys = {97,98,99,101,102,103};// 字节数组

        fos.write(bys);// 一次性写入多个字节  传入字节数组

        // 传入字节数组 以及字符的开始索引 写入几个字符
        fos.write(bys,0,2);

        // 关闭资源
        fos.close();
    }
}


字节输出流的两个问题

  • 如何实现换行写入
package com.hfut.edu.test9;

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class test11 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("D:\\heima\\1.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.close();
    }
}
  • 如何实现续写 就是接着前面的字符 不是清除重写
package com.hfut.edu.test9;

import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

public class test11 {
    public static void main(String[] args) throws IOException {
        // 打开续写开关
        FileOutputStream fos = new FileOutputStream("D:\\heima\\1.txt",true);// 字节输出流

        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.close();
    }
}

try-catch-finally捕获异常

在这里插入图片描述


package com.hfut.edu.test9;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class test12 {
    public static void main(String[] args) {

        FileOutputStream fos = null;
        try {

            // 这里的fos已经是局部变量  所以需要一开始进行声明
            fos = new FileOutputStream(new File("D:\\heima\\1.txt"));
            fos.write(97);// 出现IO异常

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // finally里面的代码一定会被执行

            // 如果字节输出流不是null 关闭字节输出流
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }

        }


    }
}

字节输入流写数据

package com.hfut.edu.test9;

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

public class test13 {
    public static void main(String[] args) throws IOException {
        // 如果文件不存在  直接报错
        FileInputStream fis = new FileInputStream(new File("D:\\heima\\1.txt"));// 字节输入流
        // 一次只读取一个字符 返回值是字符的ASCII值
        int read = fis.read();// 读取数据
        System.out.println((char)read);// 强制转换成字符类型
        fis.close();
    }
}


字节流读数据 一次性读取多个数据

package com.hfut.edu.test9;

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

public class test14 {
    public static void main(String[] args) throws IOException {
        FileInputStream fis = new FileInputStream(new File("D:\\heima\\1.txt"));
        int b;
        // while循环一次性读取多个字节
        while ((b = fis.read()) != -1)
        {
            // 读取到空格的时候  返回-1
            System.out.println(b);
        }
        fis.close();
    }
}


案例、文件复制

在这里插入图片描述

package com.hfut.edu.test9;

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

public class test15 {
    public static void main(String[] args) throws IOException {
        // 创建 字节输入流  准备读数据
        FileInputStream fis = new FileInputStream(new File("D:\\heima\\1.txt"));

        // 创建字节输出流
        FileOutputStream fos = new FileOutputStream("D:\\heima\\2.txt");

        int b;

        while((b = fis.read()) != -1){
            fos.write(b);
        }

        fis.close();
        fos.close();
    }
}


使用字节数组进行拷贝文件

package com.hfut.edu.test9;

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

public class test15 {
    public static void main(String[] args) throws IOException {
        // 创建 字节输入流  准备读数据
        FileInputStream fis = new FileInputStream(new File("D:\\heima\\1.txt"));

        // 创建字节输出流
        FileOutputStream fos = new FileOutputStream("D:\\heima\\2.txt");

        byte [] bytes = new byte[1024];// 字节数组
        int len;// 本次读取的有效字节个数

        while((len = fis.read()) != -1){
            fos.write(bytes,0,len);// 读取多少字节 写入多少字节
        }

        fis.close();
        fos.close();
    }
}


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

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

相关文章

基于Springboot+vue+uni-app的校园失物招领平台源码+数据库,含主体PC端、微信小程序和web后台数据管理平台

校园失物招领网站 | lijinghai 项目介绍 📖 👉基于Springbootvueuni-app的校园失物招领平台. 含平台主体PC端、微信小程序和web后台数据管理平台. 完整代码下载地址:基于Springbootvueuni-app的校园失物招领平台源码数据库 失物招领信息一…

枚举算法实例应用(二)

枚举算法实例应用(二) Extended Lights Out Description In an extended version of the game Lights Out, is a puzzle with 5 rows of 6 buttons each (the actual puzzle has 5 rows of 5 buttons each). Each button has a light. When a button …

什么是云原生(非常详细)

云原生计算加速了应用与基础设施资源之间的解耦,通过定义开放标准,向下封装资源,将复杂性下沉到基础设施层;向上支撑应用,让开发者更关注业务价值。此外,云原生计算提供统一的技术栈,动态、混合…

LabVIEW创建Web服务

LabVIEW创建Web服务在LabVIEW项目中开发Web服务,组合并配置构成Web服务的VI和其他文件。按照下列步骤创建一个Web服务项目和两个HTTP方法VI。创建一个组织Web服务文件的LabVIEW项目。将项目保存为Tutorial.lvproj。右键单击我的电脑并选择新建Web服务。LabVIEW在该终…

C语言基本数据类型

一、float、double和 long double 1.1 声明浮点型变量 1.2浮点型常量 1.3 打印浮点值 二、复数和虚数类型 三、其他类型 一、float、double和 long double 对于金融和数学的程序经常使用浮点数,而C语言中的浮点类型有float、double和 long double类型。常见的…

CentOS Stream 9下RabbitMQ安装教程(最新RabbitMQ安装教程)

CentOS Stream 9 RabbitMQ安装教程前言Erlang下载安装RabbitMQ下载安装启动RabbitMQ配置RabbitMQManagement Plugin访问和权限日志文件和管理总结和收获如果博主的文章对您有所帮助,可以评论、点赞、收藏,支持一下博主!!!前言 操作系统:Cent…

RocketMQ消息短暂而又精彩的一生

核心概念 NameServer:可以理解为是一个注册中心,主要是用来保存topic路由信息,管理Broker。在NameServer的集群中,NameServer与NameServer之间是没有任何通信的。Broker:核心的一个角色,主要是用来保存消息…

刚录制德云社相声春晚,又带领徒弟排练京剧,郭德纲成功不是偶然

不知道大家有没有发现一种现象,很多人在底层的时候,都是削尖了脑袋往前钻,可是一旦有一天功成名就,就会刀兵入库马放南山。这种做法通俗地讲,就是功成名就激流勇退,比如马云、刘强东、黄征等互联网企业大佬…

【RabbitMQ】MQ的基本概念、RabbitMQ简介及安装

文章目录MQ的基本概念MQ概述MQ 的优势和劣势常见的MQ产品RabbitMQ简介RabbitMQ的安装1. 安装依赖环境2. 安装Erlang3. 安装RabbitMQ4. 开启管理界面及配置5. 启动6. 配置虚拟主机及用户用户角色Virtual Hosts配置创建Virtual Hosts设置Virtual Hosts权限MQ的基本概念 MQ概述 …

Python3,我把新年祝福写在“雨“中,你看,雨一直下,气氛还算融洽,在同个屋檐下....

新年愿望写在"雨"中1、引言2、代码实战2.1 模块介绍2.1.1 Pygame 介绍2.1.2 Pygame的display介绍2.1.3 Pygame的event介绍2.1.4 Pygame的font介绍2.2 代码示例3、总结1、引言 小屌丝:鱼哥,2023年了, 你有啥愿望啊? 小鱼…

同消费互联网时代的轰轰烈烈相比,产业互联网似乎低调了许多

毫无疑问的是,一场衍生于产业的深度变革正在上演。在这样一场深度变革之中,曾经看似无法改变的存在,有了进化的可能性;曾经让玩家们望而却步的领域,有了进军的可能性。如果对这样一场深度变革进行一次总结的话&#xf…

测试分类那么多,哪些是你最需要掌握的内容?

目录 一、按照测试对象分类 1.1、可靠性测试 1.2、容错性测试 1.3、安装卸载测试 1.4、内存泄漏测试 1.5、弱网测试 二、按照是否查看代码分类 2.1、黑盒测试(系统测试) 2.2、白盒测试(单元测试) 2.3、灰盒测试&#xff0…

[数据结构1-1] 线性表

P3156 【深基15.例1】询问学号 题目描述 有 n ( n≤210^6) 名同学陆陆续续进入教室。我们知道每名同学的学号(在 1 到 10^9之间),按进教室的顺序给出。上课了,老师想知道第 i个进入教室的同学的学号是什么(最先进入…

浅谈IT自动化运维体系

大家好,今天我们来简单介绍一下 IT自动化运维的体系。 随着IT运维体系的不断发展,IT自动化运维已经成为IT运维体系的重要组成部分,并将随着信息化的发展发挥着越来越重要的作用。面对复杂的业务和多样化的用户需求,IT架构体系需要…

防微杜渐,未雨绸缪,百度网盘(百度云盘)接口API自动化备份上传以及开源发布,基于Golang1.18

奉行长期主义的开发者都有一个共识:对于服务器来说,数据备份非常重要,因为服务器上的数据通常是无价的,如果丢失了这些数据,可能会导致严重的后果,伴随云时代的发展,备份技术也让千行百业看到了…

LINUX提权之信息收集篇

前言 准备开一个新坑,最近在学linux提权,于是打算用几篇文章来记录一下linux提权的重要知识点。首先第一篇文章介绍一下linux权限的基础信息以及如何进行信息收集。 LINUX权限简介 因为我们要学习权限提升,所以在学习提权之前我们先了解一…

ThinkPHP多语言文件包含RCE(QVD-2022-46174)

漏洞范围 v6.0.0<ThinkPHP<v6.0.13v5.0.0<ThinkPHP<5.0.12v5.1.0<ThinkPHP<5.1.8 需开启多语言选项&#xff0c;以thinkPHP6版本为例 在自定义中间件定义文件app/middleware.php中添加\think\middleware\LoadLangPack::class php需安装pearcmd拓展,并且开…

文档控件Aspose.words for.java 授权须知

支持的平台 Aspose.Words 可作为 .NET、Java、C 和 Python 的四种不同产品使用&#xff0c; .NET Framework.NET Standard 2.0Xamarin.AndroidXamarin.iOSXamarin.MacCOMMonoWindows Azure 系统要求 任何可以运行 Java Runtime Environment (JRE) 的操作系统都可以运行 Aspo…

02FPGA的巨大优势

在FPGA诞生的初期&#xff0c;计算机研究员是最先感受到FPGA的巨大优势的。 在此之前&#xff0c;要想实现一个新计算机体架构的设计想法&#xff0c;必须要开发一个ASIC作为原型&#xff0c;在面板上安装很多个体积庞大的IC。 但是&#xff0c;与这些需要投入巨大成本和精力…

I2C上拉电阻的选择-计算公式

I2C一般为开漏结构&#xff0c;需要在外部加上拉电阻&#xff0c;常见的阻值有1k、1.5k、2.2k、4.7k、5.1k、10k等。 但是应该如何根据开发要求选择合适的阻值呢&#xff1f; 假设SDA是低电平时&#xff0c;即MOS管导通。那么&#xff0c;就可以求出上拉电阻R的阻值。 上拉…