第八节 Java IO流

第八节:SpringBoot Spring Boot是一个简化Spring应用开发的框架,提供自动配置、起步依赖和内嵌服务器等特性。文章详细介绍了Spring Boot的核心概念、快速入门方法、自动配置原理、配置文件使用、Starter机制、数据访问、Web开发和生产就绪特性。通过对比传统Spring框架,展示了Spring Boot在开发效率、配置简化等方面的优势。内容包含创建项目示例、项目结构说明、条件注解解析以及自定义Starter的方法,适合开发者快速掌握Spring Boot的核心技术并应用于微服务开发。 阅读详情

java IO简介

Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。

Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。

Java输入输出流
Java输入输出流

IO的分类
1. java.io包中阻塞型IO
2. java.nio包中的非阻塞型IO——>new IO

IO类
1. 流式部分——>IO的主体
2. 非流式部分——>辅助流式部分

IO类的分类

文件操作

class FileOpreator{
    public static void main(String[] args) throws IOException {

        //获取文件或者文件夹引用
        File file = new File("D:/百度脑图/abc");
        //创建文件
        file.createNewFile();

        //创建文件夹
        new File("D:/百度脑图/新建文件夹").mkdirs();

        //获取文件列表
        File[] files = new File("D:/百度脑图").listFiles();
        for (int i = 0; i < files.length; i++) {
            System.out.println(files[i].getName());
        }
    }
}

字节流

class FileCopy{
    /**
     * 使用字节流,单字节复制
     */
    public static void byteStreamCopy(String src,String des) throws IOException {
        FileInputStream inputStream = new FileInputStream(new File(src));
        FileOutputStream outputStream = new FileOutputStream(new File(des));
        int value=0;
        while ((value=inputStream.read())!=-1){//获取字节
            outputStream.write(value);
        }
        inputStream.close();
        outputStream.close();
        System.out.println("单字节复制成功!");
    }
    /**
     * 使用字节流,字节数组复制
     */
    public static void bytesStreamCopy(String src,String des) throws IOException {

        FileInputStream inputStream = new FileInputStream(new File(src));
        FileOutputStream outputStream = new FileOutputStream(new File(des));

        byte[] bytes = new byte[1024];
        int len;
        while((len=inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,len);
        }
        inputStream.close();
        outputStream.close();
        System.out.println("字节数组复制成功");
    }
}

字符流

public FileCopy{
 /**
     * 字符流复制,单个字符复制
     * 字符流不能拷贝流媒体,因为,字符流是先读取字节,然后转码,再输出,转码之后就不是媒体文件了。
     */
    public static void charStreamCopy(String src,String des) throws IOException {

        FileWriter fileWriter = new FileWriter(new File(des));
        FileReader fileReader = new FileReader(new File(src));
        int value;
        while ((value = fileReader.read()) != -1) {
            fileWriter.write(value);
            fileWriter.flush();
        }
        fileReader.close();
        fileWriter.close();
    }
    /**
     * 使用字符流复制,数组复制
     */
    public static void charsStreamCopy(String src,String des) throws IOException {
        FileReader fileReader = new FileReader(new File(src));
        FileWriter fileWriter = new FileWriter(new File(des));
        int len;
        char[] chars=new char[1024];
        while((len=fileReader.read(chars))!=-1){
            fileWriter.write(chars,0,len);
        }
        fileReader.close();
        fileWriter.close();


    }
}

字符流和字节流总结

package java基础;

import java.io.*;

public class 文件复制 {
    public static void main(String[] args) {
        String src="D:\\百度脑图\\Java语言编程\\JavaIO.png";
        String des="D:\\百度脑图\\JavaIO.png";
        //单字节复制
//        try {
//            FileCopy.byteStreamCopy(src,des);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
        //字节数组赋值
//        try {
//            FileCopy.bytesStreamCopy(src,des);
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
    //单字符复制
        try {
            FileCopy.charStreamCopy(src,des);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //字符数组复制
        try {
            FileCopy.charsStreamCopy(src,des);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


class FileCopy{
    /**
     * 使用字节流,单字节复制
     */
    public static void byteStreamCopy(String src,String des) throws IOException {
        FileInputStream inputStream = new FileInputStream(new File(src));
        FileOutputStream outputStream = new FileOutputStream(new File(des));
        int value=0;
        while ((value=inputStream.read())!=-1){//获取字节
            outputStream.write(value);
        }
        inputStream.close();
        outputStream.close();
        System.out.println("单字节复制成功!");
    }
    /**
     * 使用字节流,字节数组复制
     */
    public static void bytesStreamCopy(String src,String des) throws IOException {

        FileInputStream inputStream = new FileInputStream(new File(src));
        FileOutputStream outputStream = new FileOutputStream(new File(des));

        byte[] bytes = new byte[1024];
        int len;
        while((len=inputStream.read(bytes))!=-1){
            outputStream.write(bytes,0,len);
        }
        inputStream.close();
        outputStream.close();
        System.out.println("字节数组复制成功");
    }

    /**
     * 字符流复制,单个字符复制
     * 字符流不能拷贝流媒体,因为,字符流是先读取字节,然后转码,再输出,转码之后就不是媒体文件了。
     */
    public static void charStreamCopy(String src,String des) throws IOException {

        FileWriter fileWriter = new FileWriter(new File(des));
        FileReader fileReader = new FileReader(new File(src));
        int value;
        while ((value = fileReader.read()) != -1) {
            fileWriter.write(value);
            fileWriter.flush();
        }
        fileReader.close();
        fileWriter.close();
    }
    /**
     * 使用字符流复制,数组复制
     */
    public static void charsStreamCopy(String src,String des) throws IOException {
        FileReader fileReader = new FileReader(new File(src));
        FileWriter fileWriter = new FileWriter(new File(des));
        int len;
        char[] chars=new char[1024];
        while((len=fileReader.read(chars))!=-1){
            fileWriter.write(chars,0,len);
        }
        fileReader.close();
        fileWriter.close();


    }
}

文件压缩

class FileZip{
    /**
     * 单个文件压缩
     */
    public static void singleFileZip(File srcFile,File desZipFile) throws IOException {
        //获取文件输入流
        FileInputStream inputStream = new FileInputStream(srcFile);
        //获取压缩文件输出流
        ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(desZipFile));
        //向文件中写入条目
        zipOutputStream.putNextEntry(new ZipEntry(srcFile.getName()));
        //写入文件
        byte[] bytes = new byte[1024];
        int len;
        while((len=inputStream.read(bytes))!=-1){
            zipOutputStream.write(bytes,0,len);
        }
        System.out.println("单文件压缩完成");
        inputStream.close();
        zipOutputStream.close();


    }

    /**
     * 多个文件压缩
     */
    public static void filesZip(File[] srcFiles, File zipFile) throws IOException {
        ZipOutputStream outputStream = new ZipOutputStream(new FileOutputStream(zipFile));

        for (int i = 0; i < srcFiles.length; i++) {
            FileInputStream inputStream = new FileInputStream(srcFiles[i]);

            //为压缩文件添加条目
            outputStream.putNextEntry(new ZipEntry(srcFiles[i].getName()));

            byte[] bytes = new byte[1024];
            int len;
            while((len=inputStream.read(bytes))!=-1) {
                outputStream.write(bytes, 0, len);
            }
            outputStream.closeEntry();
            inputStream.close();
        }
        System.out.println("压缩完成。");
        outputStream.close();

    }

    /**
     * 文件夹及其文件压缩
     */
    public static void singleDirFileZip(File srcDir,File zipFile) throws IOException {
        File[] files = srcDir.listFiles();
        for (int i = 0; i < files.length; i++) {
            filesZip(files,zipFile);
        }
    }

    /**
     * 多个文件夹组合压缩
     */
    public static void dirsFileZip() throws IOException {


    }

}
(Java高级教程)第三章Java网络编程-第八节:博客系统搭建(前后端分离) 在(Java高级教程)第四章必备前端知识-最终节:博客系统搭建(页面设计部分)中我们实现了一个博客系统的前端页面。这一节我们会结合Servlet和之前的前端页面搭建一个完整的博客系统。该博客系统十分简单,虽然只包含下面最基础的功能,但足以对我们之前学习内容进行串联本文完整代码见Gihub仓库:点击跳转博客登录页: 博客列表页:博客详情页:博客编辑页:博客登录和列表页展示:在用户未登录并访问其他页面时强制要求登录: 博客列表页用户信息和博客详情页作者信息展示:注销账户:发布博客:删除博客:博客数据,用户数据都 阅读详情

相关推荐

无感无刷电机控制进阶:反电动势过零检测的5种实现方案对比

本文深入探讨无感无刷电机控制中反电动势过零检测的5种实现方案,包括电阻分压虚拟中性点法、专用BEMF检测IC方案、基于ADC采样的数字锁相环、无传感器观测器技术及混合方案创新实践。通过对比分析各方案的优劣及适用场景,为电机控制工程师提供实用的技术选型指南,助力提升系统性能与成本效益。

weixin_28691741的博客 843

Java 8章 IO 编程题

题目一利用DataInputStream类和BufferedInputStream类编写一个程序,实现从键盘读入一个字符串,在显示器上显示前两个字符的Unicode码以及后面的所有字符。结果请输入字符串 asdfjkl 字符一的Unicode码:97 字符二的Unicode码:115 d f j k l思路DataInputStream 类继承自 FilterInputStr

SmacUL的博客 1823

PLS-PM with R 偏最小二乘路径建模 (R语言)

1. 引入 1.1. 安装plspm包 plspm 是一个用于执行偏最小二乘路径建模分析的 r 程序包。 在 CRAN 上可以免费下载: Http://cran.r-project.org/web/packages/plspm/index.html. 此后,通过以下代码在r中安装并加载该程序包即可。 install.packages("plspm") library("plspm") 2. 一些简单概念 2.1. 潜变量和观测变量 不少变量如满意度、成功指数是无法通过观测得到

Wowlittlemoon的博客 1万+

第八节:序列化、IO、文件

第八节:序列化、IO、文件 输入字节流: ---------| InputStream 所有输入字节流的基类 抽象类 -------------| FileInputStream 读取文件数据的输入字节流 -------------| BufferedInputStream 缓冲输入字节流 缓冲输入字节流的出现主要是为了提高读取文件数据的效率。(内部维护了一个8KB的字节数组而已) 注意...

impermanences的博客 180

深入解析APS开源排程工具OptaPlanner:链式结构与移动优化

本文深入解析了开源APS排程工具OptaPlanner的核心机制,重点阐述了链式结构如何作为排程优化的“骨架”,通过单一`previous`变量隐式定义资源与顺序,从而简化建模。文章详细介绍了基于此结构的移动操作(如`ChainChangeMove`)如何驱动优化引擎探索解空间,并自动触发影子变量更新与分数计算,为构建高效、灵活的生产计划系统提供了实践指导。

keras9composer的博客 297

用STM32H7的FMC+AD7606搭建多通道数据采集系统:两种工作模式(查询与FIFO中断)的代码详解与性能对比

本文详细解析了基于STM32H7微控制器和AD7606 ADC芯片的多通道数据采集系统设计,重点对比了查询模式与FIFO中断模式的实现方法与性能差异。通过FMC总线实现高速并行数据采集,系统支持16bit同步采样,最高可达200Ksps/通道。文章提供了完整的代码实现和优化策略,帮助工程师在工业监测等实时性要求高的场景中构建可靠的数据采集方案。

weixin_30599769的博客 485

19.各类其他流

IO流:缓冲流等 第一节 转换流 作用: a.实现字节流到字符流的转换 b.解决中文乱码的问题 中文编码 gb2312 (采用两个字节保存字符汉字,英文数字一个字节) GBK (采用两个字节保存字符汉字,英文数字一个字节) GB18030 (英文数字都是一个字节,中文是两个或四个字节) Unicode字符集(包含每个国家的所有字符)国际通用 unicode编...

松松的博客 569

第八节 Java JDBC

第八节 Java JDBC1. JDBC 概念2. JDBC 常用API2.1 Driver 接口2.2 DriverManager 类2.3 Connection 接口2.4 Statement 接口2.5 PreparedStatement 接口2.6 ResultSet 接口3. JDBC 编程步骤4. 编写第一个JDBC程序 1. JDBC 概念 由来:用来增强数据库的移植性,如果不用JDBC我们直接和底层的数据进行连接,当我们换数据库的时候就需要去更改相关代码。因为底层的驱动不同,对应的接口

fancy_hacker的博客 425

YOLOv12涨点改进 | Neck特征融合改进篇 | YOLOv12引 入 BiFPN双向特征金字塔网络,显著提升了多尺度特征融合效率,目标检测、图像分割、图像分类,助力高效涨点

本文提出了一种基于BiFPN特征融合模块优化的YOLOv12目标检测方法。BiFPN通过引入可学习的权重实现高效的多尺度特征融合,结合双向连接机制提升特征提取能力。实验表明,该方法在COCO数据集上实现了优异的检测性能。文章详细介绍了BiFPN模块的原理、核心代码实现,以及如何将其集成到YOLOv12框架中,包括模块添加、配置文件修改等具体步骤。这种改进方案具有参数少、计算量小等优势,为高效目标检测提供了一种新的技术路径。

Ai缝合怪、助力小伙伴高效发论文 391

小波变换(深入浅出)

小波变换

weixin_46713695的博客 3万+

【软件工程自考】java语言基础第八节

回顾之前用过的输出方法有System.out,Scanner当程序需要读取数据的时候就会开启一个通向数据源的流,这个数据源可以是文件、内存或是网络连接、类似的←。当程序需要写入数据的时候,就会开启一个通向目的地的流→流的分类方法有三种1.从流的方向划分:输入流、输出流2.从流的分工划分:节点流、处理流四种:InputStream,OutputStream,Reader,Writerjava之中标准的输入输出流:InputStream类型的,代表标准输入流,这个流是已经打开了的,默认状态对应键盘输入。

weixin_56591289的博客 690

YOLO26 网络结构逐模块解析:Backbone/Neck/Head

本文解析了YOLO26目标检测网络的架构设计,重点介绍其在Backbone、Neck和Head三个核心组件的创新优化。Backbone采用改进的CSP模块与轻量级注意力机制,提升特征提取效率;Neck使用改进的BiFPN结构实现高效多尺度特征融合;Head采用完全解耦设计简化回归流程。文章详细分析了各模块的技术演进、实现细节和设计思想,通过流程图和代码示例展示了YOLO26的整体架构和关键组件实现。该研究对模型优化、定制开发和硬件部署具有重要指导意义。

一键难忘的博客 1246

java i o流异常问题_第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架...

前言大家好,给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢JAVA 异常try...catch...finally结构的使用方法class Test{public static void main(String args[]){try{int i = 1 / 0;}catch(Exception e){e.printStackTrace();}fina...

weixin_29529047的博客 158

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

第八节:详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架

前言大家好,我是 Vic,今天给大家带来详细讲解Java中的异常处理情况与I/O流的介绍以及类集合框架的概述,希望你们喜欢JAVA 异常try...catch...finally结构的使用方法class Test{ public static void main(String args[]){ try{ int i = 1 / 0; } catch(Exception e){ ...

程序员哆啦A梦,蓝胖子 436

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

全网最火Java面试题

第一部分 JAVA 基础第一节 IO/NIO第二节 反射第三节 多线程第四节 集合第五节 Web第六节 其他第七节 关键字第八节 操作符第九节 基础类型第十节 异常第十...

hnjsjsac的博客 285

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java基础课第八节

音乐管理系统———用户管理的完善 这节课主要是对音乐管理系统的用户管理进行了完善,添加了用户添加,用户查询,用户修改以及用户删除 其主要代码如下: public List yhcx() throws Exception{ Listusers=new ArrayList<>(); Connection connection =DBUtil.getConection(); String ...

qqqnmn的博客 145

第八节多线程和反射

第八章线程和反射

小宋自学java 301

Java系列个人总结

Java系列

小宋自学java 365

docker portainer_docker随手笔记第十一节 portainer.io安装使用,比k8s简单

docker随手笔记第一节 docker概念及安装docker随手笔记第二节 docker常用命令解析docker随手笔记第三节 docker构建java镜像docker随手笔记第四节 docker安装mysql5.7docker随手笔记第五节 docker安装redis4.0docker随手笔记第六节 docker安装jenkinsdocker随手笔记第七节 jenkins通过git部署java...

weixin_39674190的博客 3239

计算机基础学习 第二节 Java等编程知识学习 汇总

总结目录 目录 Java基础知识 序言. Java基础知识 第一节 Java的一些基础常识与准备. Java基础知识 第二节 认识Java代码及一些变量. Java基础知识 第三节 面向对象的复习. Java基础知识 第四节 多线程的复习. Java基础知识 第五节 Java API与集合的复习. Java基础知识 第六节 IO流. Java基础知识 第七节 GUI的复习. Java基础知识 第八...

羽落清泫的博客 357

Centos下Java环境搭建课程——第八节:Centos下Redis安装

1、下载Redis cd /usr/local wget http://download.redis.io/releases/redis-6.0.6.tar.gz 2、解压 tar -zxvf redis-6.0.6.tar.gz 3、编译安装 cd redis-6.0.6 make make install 4、修改配置 vim redis.conf #修改ip绑定 #bing 127.0.0.1 --注释掉 #打开远程访问模式,这个根据自己的需求操作 protect.

chenchao_JAVA的博客 214

第八节 SpringBoot使用过滤器与拦截器

一、过滤器Filter 创建过滤器的方法很简单,也传统的WEB项目一样,实现 Filter接口即可 package com.zhoutianyu.learnspringboot.filter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.servlet.*; import ja...

大宇的博客,欢迎访问 1219

【Java框架型项目从入门到装逼】第八节 - 用EasyUI绘制主界面

###1.引入资源包 在上一节中,我们把基本的框架都搭好了,用了Spring,SPringMVC。这一节,我们先来画页面,前端框架采用EasyUI来实现。 easyui是一种基于jQuery的用户界面插件集合,使用easyui我们就不需要写很多代码,只需要通过编写一些简单HTML标记,就可以定义用户界面。 现在,我们把easyui需要的资源包拷贝进来。 ###2.绘制主界面 界面的话,我们就用html来实现吧,在WebContent目录下新建一个页面叫index.html。 目录结构如下: 代码: &

java小白翻身 284

acm集训队课程设置--第八节课

acm集训队课程设置--第八节课 本节主要内容:关于数论的学习。实现进制转换,最大公约数、最小公倍数求法等,还有大数相加减乘除,素数问题,斐波那契数列,容斥定理;进制转换n进制小数将任意十进制正小数分别转换成2,3,4,5,6,7,8,9进制正小数,小数点后保留8位,并输出。  例如:若十进制小数为0.795,则输出:  十进制正小数 0.795000 转换成 2 进制数为: 0.11001011...

stay hungry ! stay foolish! 747
上一篇: 第九节 Java多线程
下一篇: 第一节 python环境安装和包管理器
江城子_Lay
博客等级 码龄9年 19粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值