第八节 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仓库:点击跳转博客登录页: 博客列表页:博客详情页:博客编辑页:博客登录和列表页展示:在用户未登录并访问其他页面时强制要求登录: 博客列表页用户信息和博客详情页作者信息展示:注销账户:发布博客:删除博客:博客数据,用户数据都 阅读详情

相关推荐

[SWPUCTF 2018]SimplePHP--一道简单的Phar反序列化题目

题目就不贴了,直接给出利用链①:echo会触发__toString魔术方法,所以这里的$this->test应该是Show类实例化的对象show②:这里应该使$this->str['str']为Test类实例化后的对象test,然后test->source会触发__get魔术方法(因为Test类没有名为source的成员变量,所以会触发get魔术方法,并且$key=source)③④:调用get方法,$...

Dream' 1258

Java 8章 IO 编程题

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

SmacUL的博客 1823

AI自动打游戏全攻略:从环境搭建到Agent训练实战

本文系统介绍了AI自动打游戏的技术实现方案,重点解析了强化学习(DQN算法)在贪吃蛇游戏中的应用。文章从技术选型入手,对比了强化学习与计算机视觉两种方案,详细说明了开发环境配置步骤,并深入讲解了DQN模型构建、游戏环境封装、训练优化等核心环节。通过经验回放和目标网络等技术,有效提升了AI的学习效率和稳定性。该方案具有通用性,只需调整参数即可应用于其他简单游戏场景,为开发者实现游戏AI提供了完整的技术路径。

milk416666的博客 4126

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

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

impermanences的博客 180

Transformer凭什么取代RNN?深入拆解自注意力机制与梯度消失问题的终极对决

本文深入探讨了Transformer如何通过自注意力机制解决RNN的梯度消失问题,成为自然语言处理领域的新标准。通过对比RNN和Transformer的架构差异,揭示了自注意力机制在并行计算、长期依赖处理等方面的技术优势,并提供了实际任务中的性能对比数据。

f6g7h8i9j的博客 190

动态博弈、威胁与承诺(博弈论入门学习笔记四)

0 动态博弈 动态博弈:行动有先后顺序,不同的参与人在不同时点行动,先行动者的选择影响后行动者的选择空间,后行动者可以观察到先行动者做了什么选择。例如下棋、消费者和商家讨价还价、谈婚论嫁、企业之间的价格战等等。 因此,为了做出最优的行动选择,每个参与人都应该思考:如果我如此选择,对方将如何应对?如果我是他,我将会如何行动?给定他的应对,什么是我的最优选择? 动态博弈中的战略:在博弈开始之前就...

stepho的博客 1万+

19.各类其他流

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

松松的博客 569

linux应用程序段错误调试

一、堆、栈 在分析段错误之前,先了解一下什么是堆?什么是栈? 堆:一般由开发者分配释放,如果没有释放,程序结束时,在有的OS中可能会被自动释放,分配方式类似于链表。堆的操作方式为,队列优先,先进先出的原则。 栈:由操作系统自动分配,存放函数的参数值,局部变量。栈的操作方式为,先进后出的原则。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。  PUSH:操作在堆栈的顶部加入一个元素...

农村种地人 1111

第八节 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

【论文精读】DisCo: Graph-Based Disentangled Contrastive Learning for Cold-Start Cross-Domain Recommendat

源域中具有相似偏好的用户在目标域中可能会表现出不同的兴趣。因此,直接迁移嵌入可能会引入不相关的源域协同信息。提出了一个基于图的解耦对比学习框架,以捕捉细粒度的用户意图并过滤掉不相关的协同信息,从而避免负迁移。 具体而言,对于每个域,我们使用多通道图编码器来捕捉多样化的用户意图。然后,我们在嵌入空间中构建亲和图,并执行多步随机游走以捕捉高阶用户相似性关系。将一个域视为目标域,我们提出了一种以用户相似性为指导的解耦意图对比学习方法,以优化跨域的用户意图桥接。

qq_52342142的博客 1227

SAP-ABAP:SAP基础数据校验工具开发系列博客(共5篇) 第一篇:需求梳理与架构设计:从零搭建SAP主数据校验能力底座

摘要: 本系列博客介绍SAP主数据校验工具的开发和设计,旨在解决物料、供应商、客户等主数据录入不规范、关联缺失和合规性问题。第一篇聚焦需求梳理与架构设计,提出分层技术架构(展示层、业务逻辑层、数据访问层),支持实时校验和批量校验两种模式,并详细说明规则引擎设计、SAP系统对接方案及权限管控逻辑。后续篇章将深入规则引擎实现、接口对接、结果可视化和性能优化,帮助构建集中式、可配置的主数据校验能力,提升SAP数据质量。

baidu_35680696的博客 330

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

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

weixin_56591289的博客 690

YOLOv8剪枝 稀疏训练+slim剪枝测试精度仅掉1.6个点,速度提高10.3fps!

摘要 本文介绍了YOLOv8剪枝方法Slim(Network Slimming),通过L1正则化作用于BN层的缩放因子(γ),自动识别并剪除冗余通道,实现模型轻量化。核心步骤包括:稀疏训练(引入L1正则化)、通道剪枝(按γ阈值裁剪)、微调恢复精度。实验表明,该方法能有效压缩模型大小、减少计算量,且支持通过调整speed_up等超参数控制剪枝强度。移植代码需修改C2F模块以适配剪枝,并配置稀疏训练参数(如reg、sl_epochs)。最终剪枝模型需移除优化器以减小体积,但不支持多卡训练。

FJN110的博客 861

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

第八节:详细讲解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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

全网最火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、付费专栏及课程。

余额充值