《从零开始的Java世界》10File类与IO流

《从零开始的Java世界》系列主要讲解Javase部分,从最简单的程序设计到面向对象编程,再到异常处理、常用API的使用,最后到注解、反射,涵盖Java基础所需的所有知识点。学习者应该从学会如何使用,到知道其实现原理全方位式地学习,才能为以后框架的学习打下良好的基础。

目录

1.File类

1.1概述

1.2实例化

1.2.1构造器

1.3常用方法

2.IO流

2.1概述

2.2分类

2.3流的API

3.文件流(节点流)

3.1FileReader

3.2FileWriter

3.3FileInputStream及FileOutputStream

4.处理流

4.1缓冲流

4.1.1实现步骤

4.1.2实现代码

4.2转换流

4.2.1介绍

4.2.2实现

4.3对象流

4.3.1说明

4.3.2对象的序列化机制

4.3.3使用

序列化过程

反序列化过程

​编辑


1.File类

1.1概述

1.2实例化

1.2.1构造器

1.3常用方法

 

2.IO流

2.1概述

2.2分类

2.3流的API

3.文件流(节点流)

3.1FileReader

读写文本文件用字符流

@Test
    public void test(){
        FileReader fr = null;
        try {
            //1.创建File类对象,对应一个文件
            File file = new File("hello.txt");
            //2.创建输入型的字符流,用于读取数据
            fr = new FileReader(file);
            //3.读取数据,显示在控制台上
            //方式一:
//            int data = fr.read();
//            while (data != -1){
//                System.out.print((char)data);
//                data = fr.read();
            //方式二:
                char buffer[] = new char[5];
                int len = fr.read(buffer);
                while (len != -1){
                    for(int i = 0; i < len; i++){
                        System.out.print(buffer[i]);
                    }
                    len = fr.read(buffer);
                }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //4.关闭流资源
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

3.2FileWriter

@Test
public void test2() {
    FileWriter fw = null;
    try {
        //1.创建File对象,指明操作的文件名称
        File file = new File("info.txt");
        //2.创建输出流
        fw = new FileWriter(file);
        //3.输出过程
        fw.write("ykx666");
    } catch (IOException e) {
        e.printStackTrace();
    }
    //4.关闭资源
    try {
        fw.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

3.3FileInputStream及FileOutputStream

读写非文本文件(如图片、音视频)用字节流

@Test
public void test(){
    
    FileInputStream fis = null;
    FileOutputStream fos = null;
    try {
        //1.创建相关的File类对象
        File file1 = new File("sdz.jpg");
        File file2 = new File("copy_sdz.jpg");
        //2.创建相关字节流
        fis = new FileInputStream(file1);
        fos = new FileOutputStream(file2);
        //3.数据的输入和输出
        byte[] buffer = new byte[1024];
        int len;
        while((len = fis.read(buffer)) != -1)
            fos.write(buffer,0,len);
        System.out.println("复制成功!");
    }catch (IOException e) {
        e.printStackTrace();
    }
    //4.关闭资源
    try {
        fis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

4.处理流

4.1缓冲流

4.1.1实现步骤

4.1.2实现代码

/*
 * 使用BufferedInputStream/BufferedOutputStream复制一张图片
 * @author yangkx
 * @date 2023-05-22 19:48
 */
@Test
public void test(){
    FileInputStream fis = null;
    FileOutputStream fos = null;
    BufferedInputStream bis = null;
    BufferedOutputStream bos = null;
    try {
        //1.创建相关的File类对象
        File file1 = new File("sdz.jpg");
        File file2 = new File("copy_sdz2.jpg");
        //2.创建相关字节流、缓冲流
        fis = new FileInputStream(file1);
        fos = new FileOutputStream(file2);

        bis = new BufferedInputStream(fis);
        bos = new BufferedOutputStream(fos);

        //3.数据的输入和输出
        byte[] buffer = new byte[1024];
        int len;
        while((len = bis.read(buffer)) != -1)
            bos.write(buffer,0,len);
        System.out.println("复制成功!");
    }catch (IOException e) {
        e.printStackTrace();
    }
    //4.关闭资源
    //先关外层
    try {
        bis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        bos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        fis.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        fos.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

4.2转换流

4.2.1介绍

4.2.2实现

4.3对象流

4.3.1说明

4.3.2对象的序列化机制

4.3.3使用

序列化过程

反序列化过程

内容来源于尚硅谷javase课程的ppt,仅作为学习笔记参考

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPForms Pro插件下载:简化您的在线表单构建,提升用户互动

在当今的数字化世界中&#xff0c;表单是网站与用户互动的关键。无论是收集信息、处理订单还是进行调查&#xff0c;一个好的表单可以极大地提升用户体验和转化率。WPForms Pro插件&#xff0c;作为一款专业的WordPress表单构建工具&#xff0c;旨在帮助您轻松创建美观、功能强…

指针(5)

前言 本节是有关指针内容的最后一节&#xff0c;本节的内容以讲解指针习题为主&#xff0c;那么就让我们一起来开启本节的学习吧&#xff01; sizeof和strlen的对比 1.sizeof 我们在学习操作符的时候&#xff0c;学习了sizeof。sizeof存在的意义是用来计算变量所占用的内存空…

函数的查询

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 在实际使用中经常会需要查询数据库中已有的函数或者某一个函数的内容&#xff0c;下面就介绍一下如何查询函数。 和存储过程类似&#xff0c;这也需要使用到数据字典user_s…

3月黄油奶酪行业数据分析:安佳和妙可蓝多领军市场

近些年来&#xff0c;随着新消费主义盛行&#xff0c;老少皆宜的黄油和奶酪逐渐成为都市年轻人的烘培“新宠”。 今年3月份&#xff0c;黄油奶酪表现的中规中矩&#xff0c;处在稳定发展阶段。根据鲸参谋数据显示&#xff0c;3月份&#xff0c;在线上综合电商平台&#xff08;…

【Java】全套云HIS源码包含EMR、LIS(多医院、卫生机构使用)

云HIS系统简介 SaaS模式Java版云HIS系统源码&#xff0c;在公立二甲医院应用三年&#xff0c;经过多年持续优化和打磨&#xff0c;系统运行稳定、功能齐全&#xff0c;界面布局合理、操作简便。 1、融合B/S版电子病历系统&#xff0c;支持电子病历四级&#xff0c;HIS与电子病…

RK3588S和ARM阵列服务器在虚拟化云平台的应用

RK3588是瑞芯微2021年底推出的首款高端8nm旗舰芯片&#xff0c;而RK3588S 则是针对消费端市场在RK3588基础上缩减了部分外围接口&#xff0c;CPU、GPU和NPU等主要参数得到了保留&#xff0c;主要应用范围为高端ARM平板、ARM笔电产品&#xff0c;会议平板类、ARM服务器、智能机器…

linux权限维持(二)

3.SSH 后门 3.1 SSH 软连接后门 软连接后门的原理是利用了 PAM 配置文件的作用&#xff0c;将 sshd 文件软连接名称设置为 su &#xff0c;这样应用在启动过 程中他会去PAM 配置文件夹中寻找是否存在对应名称的配置信息 (su) &#xff0c;然而 su 在 pam_rootok 只检测 uid…

❤️新版Linux零基础快速入门到精通——第一部分❤️

❤️新版Linux零基础快速入门到精通——第一部分❤️ 非科班的我&#xff01;Ta&#xff01;还是来了~~~1. 来认识一下Linux吧!1.1 操作系统概述1.1.1 操作系统概述1.1.2 操作系统的发展史1.1.2.1 Unix1.1.2.2 Minix1.1.2.3 Linux 1.1.3 操作系统的发展 1.2 Linux初识1.2.1 Lin…

芯科科技大大简化面向无电池物联网的能量采集产品的开发

芯科科技推出其迄今最高能量效率且支持能量采集功能的无线SoC 中国&#xff0c;北京 – 2024年4月22日 – 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;…

CTFHub(web sql)(四)

Cookie注入 Cookie 注入的原理也和其他注入一样&#xff0c;只不过是将提交的参数已 Cookie 方式提交&#xff0c;而一般的注入是使用 GET 或者 POST 方式提交&#xff0c;GET 方式提交就是直接在网址后面加上需要注入的语句&#xff0c;POST 方式则是通过表单&#xff0c;GET …

网络基础(day3)建议在电脑端注册登陆观看!!!

【 理论重点】 网络是什么&#xff1f; &#xff08;网络是载体&#xff0c;目的是传输互联网中的数据&#xff0c;数据是终端产生<手机、电脑、服务器等>。&#xff09; 如何组件网络&#xff08;良性网络架构&#xff09;&#xff1f;有网络架构思维&#xff0c;得按层…

线性代数-知识点复习(面试用)

整理&#xff1a;Peter1146717850 一、向量与线性组合 向量&#xff1a;往什么方向走多么远 e.g. ( 1 2 ) \begin{pmatrix} 1 \\ 2\end{pmatrix} (12​) 向量的模&#xff1a;向量的长度 向量的加减法&#xff1a;向量对应元素相加减&#xff08;前提&#xff1a;维度相同…

面试中关于 SpringCloud 都需要了解哪些基础?

在面试中&#xff0c;对于Spring Cloud的基础知识了解是至关重要的&#xff0c;因为Spring Cloud是构建分布式系统和微服务架构的关键技术栈之一。以下是在面试中可能会涉及到的相关问题。 1. 微服务架构基础 概念理解&#xff1a;理解微服务架构的概念&#xff0c;包括服务拆…

【MySQL】A01、性能优化-结构设计与配置

1、数据库设计原则 1.1、核心原则 不在数据库做运算; cpu计算务必移至业务层; 控制列数量(字段少而精,字段数建议在20以内); 平衡范式与冗余(效率优先&#xff1b;往往牺牲范式) 拒绝3B(拒绝大sql语句&#xff1a;big sql、拒绝大事务&#xff1a;big transaction、拒绝大…

Xbox VR头盔即将推出,但它是Meta Quest的‘限量版’。

&#x1f4f3;Xbox VR头盔即将推出&#xff0c;但它是Meta Quest的‘限量版’。 微软与Meta合作推出限量版Meta Quest VR头映射Xbox风格&#xff0c;可能是Meta Quest 3或未来版本的特别定制版&#xff0c;附带Xbox控制器。这一合作是Meta向第三方硬件制造商开放其Quest VR头盔…

什么是redis服务+redis服务数据类型有哪些??

一、背景&#xff1a; 在运维工作会一定会接触到数据库服务&#xff0c;例如oracle数据库、mysql数据库、redis数据库等&#xff0c;这里要介绍的就是redis数据库。 二、什么是redis&#xff1f;&#xff1f; Redis&#xff0c;英文全称是Remote Dictionary Server&#xff08;…

GraphQL速学笔记

在学习开始前&#xff0c;我习惯先用gpt了解一个这是个什么东西&#xff1a; GraphQL是一种用于API开发的查询语言和运行时环境。它由Facebook于2012年开发并在2015年开源&#xff0c;旨在解决传统RESTful API的一些限制和缺点。 在GraphQL中&#xff0c;客户端可以通过发送查询…

STM32F103学习笔记 | 4.STM32F103芯片介绍

STM32F1入门学习将使用STM32F103C8T6开发板最小系统板。小R为什么选择它来入门呢&#xff1f;咳咳~首先&#xff0c;ST官方提供强大且易用的标准库函数&#xff0c;使得开发过程方便快捷&#xff1b;其次&#xff0c;网上的教程资料多也十分详细。所以呢&#xff0c;它对高校学…

STM32 串口打印乱码(Cubemx)

STM32 串口打印乱码&#xff08;Cubemx&#xff09; 时钟配置错误&#xff0c;CubeMX默认的外部晶振是25MHz&#xff0c;而板载的晶振为8MHzSTM32F407修改程序将外部25M晶振修改为8M&#xff08;标准库、HAL库&#xff09; 核心问题 芯片型号与晶振配置&#xff1a;使用的ST…

深入探究音视频开源库WebRTC中NetEQ音频抗网络延时与抗丢包的实现机制

目录 1、引言 2、WebRTC简介 3、什么是NetEQ&#xff1f; 4、NetEQ技术详解 4.1、NetEQ概述 4.2、抖动消除技术 4.3、丢包补偿技术 4.4、NetEQ概要设计 4.5、NetEQ的命令机制 4.6、NetEQ的播放机制 4.7、MCU的控制机制 4.8、DSP的算法处理 4.9、DSP算法的模拟测试…