Java中的IO流

Java中的IO流详解 Java NIO (New IO,Non-Blocking IO)是从Java 1.4版本开始引入的一套新的IO API,可以替代标准的Java IO API。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的(IO是面向流的)、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。​ |-----FileChannel:处理本地文件。 阅读详情

Java中的IO流
    0.io 流 : 读写文件内部的内容,上传下载,拷贝文件,拷贝文件夹...
    1.流 : 就是管道
        以先入先出的方式进行流动
        作用 : 做数据传输
        数据源  ------>  目的地
        流的分类 :
            按照流向分 : (以程序为中心)
                输入流
                 输出流
            按照操作单元 :
                字节流 : 万能流
                字符流 : 操作纯文本文件
             按照功能划分 :
                 节点流 : 真实做读入写出的流
                处理流|功能流 : 增强节点流的功能,提高节点流的性能
            以上的所有分类之间都是相辅相成的
    2.字节流
        输入流 : InputStream
            根据数据源选择节点流 : 节点流
            数据源为字节数组 :  ByteArrayInputStream字节数组输入流(了解)
            数据源为文件 : FileInputStream文件字节输入流
            操作
                需求 : 从文件中读入数据到程序
                文件 : 数据源   -->    程序 : 目的地
                1)构建文件字节输入流
                    FileInputStream(File file)通过打开与实际文件的连接来创建FileInputStream ,该文件由文件系统中的File对象file命名。
                    FileInputStream(String name) 通过打开与实际文件的连接来创建FileInputStream ,该文件由文件系统中的路径名name命名。
                2)读入数据
                3).使用数据
                     System.out.println(is.read());  //如果读到文件末尾返回-1
                4).关闭
                优化 一:
                    之前使用字节流每次读入一个字节数据,重复读入多次,重复读入的代码过于冗余,不够精简
                    可以通过循环结构简化重复读入的操作
                    1.与文件建立联系(数据源文件|目的地文件
                    2.构建流(文件字节输入流)
                    3.读入数据
                    4.使用数据
                    5.关闭
                优化二:
                    每次读入一个字节,循环读入多次,虽然代码简洁,但是效率较低
                    可以从每次读入一个字节数据变为每次读入一卡车字节数据
                    int read(byte[] b) 从输入流中读取一些字节并将它们存储到缓冲区数组b中。
                    返回值 : 为每次读入到字节数组中数据的个数
                    1.与文件建立联系(数据源文件|目的地文件)
                    2.构建流(文件字节输入流)
                    3.读入数据
                        int len; //记录每次读入的数据个数
                        byte[] car = new byte[1024];
                        while((len=is.read(car))!=-1)
                    4.使用数据
                         System.out.println(new String(car,0,len));
                    5.关闭
                从输入流中读取所有剩余字节。
                    System.out.println((char)(is.read()));
                    System.out.println(new String(is.readAllBytes()));
                异常捕获+资源关闭
                     jdk7下新增 : try-with-resources,对try中创建的资源在使用完毕之后进行关闭,要求资源的类型必须实现了AutoCloseable接口
                    jdk7之前 : try ..catch ..finally
                    jdk7新增 : try-with-resources
                    jdk9之前 :
                    jdk9新增 :
         输出流 : OutputStream
            这个抽象类是代表字节输出流的所有类的超类。
            根据目的地选择节点流 :
                 当目的地为字节数组 : ByteArrayOutputStream 字节数组输出流
                当目的地为文件 :  FileOutputStream 文件字节输出流
            注意 :  如果目的地文件存在并且包含内容,写出默认覆盖,可以调用重载构造器,boolean append-->true追加  false覆盖
            如果目的地文件不存在,系统会自动创建目的地文件,但是目的地文件所在路径(文件夹)不会自动创建
            操作
                需求 : 将程序中的数据写出到输出流中,流向目的地文件
                1)与目的地文件建立联系
                2)构建文件字节输出流
                    FileOutputStream os = new FileOutputStream("D://AAA/test2.txt"); //默认覆盖
                    FileOutputStream os = new FileOutputStream("D://AAA/test.txt",true);  //追加
                3)准备数据
                4)写出数据
                5)刷出
                6)关闭
    //声明
        FileInputStream is = null;
        try{
            //1.与文件建立联系(数据源文件|目的地文件)
            //2.构建流(文件字节输入流)
            is = new FileInputStream("D://AAA/test2.txt");
            //3.读入数据
            int len; //记录每次读入的数据个数
            byte[] car = new byte[1024];
            while((len=is.read(car))!=-1){
                //4.使用数据
                System.out.println(new String(car,0,len));
            }
        }catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //5.关闭
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }*/
    try(
                FileInputStream is =new FileInputStream("D://AAA/test2.txt");
        ){
            //1.与文件建立联系(数据源文件|目的地文件)
            //2.构建流(文件字节输入流)
            //3.读入数据
            int len; //记录每次读入的数据个数
            byte[] car = new byte[1024];
            while((len=is.read(car))!=-1){
                //4.使用数据
                System.out.println(new String(car,0,len));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }*/

    FileInputStream is =new FileInputStream("D://AAA/test2.txt");
        /*try(
                FileInputStream is2 = is;
        ){
            //1.与文件建立联系(数据源文件|目的地文件)
            //2.构建流(文件字节输入流)
            //3.读入数据
            int len; //记录每次读入的数据个数
            byte[] car = new byte[1024];
            while((len=is2.read(car))!=-1){
                //4.使用数据
                System.out.println(new String(car,0,len));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }*/
    try(is){
            //1.与文件建立联系(数据源文件|目的地文件)
            //2.构建流(文件字节输入流)
            //3.读入数据
            int len; //记录每次读入的数据个数
            byte[] car = new byte[1024];
            while((len=is.read(car))!=-1){
                //4.使用数据
                System.out.println(new String(car,0,len));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

IC面试常考题 Verilog三分频电路设计(占空比50%,三分之一,三分之二) 实现三分频电路最简单的是: 利用计数器实现。 时序图分析(本人比较懒,平常科研忙,所以直接手画时序图了,懒得用软件画了): 直接上图分析:利用计数器每隔三个周期信号翻转一次,同时在不同的计数下翻转得到的同步信号 clk_1和clk_2,再利用异或即可实现出一个不同占空比的三分频信号(同样的方法也可扩展到其他奇数分频设计中)。 例如占空比50%: module Div_three( input clk, input rst_n, output div_three ); reg 阅读详情

相关推荐

Windows下用VS2022编译libcurl全流程(含openssl配置避坑指南)

本文详细介绍了在Windows平台使用Visual Studio 2022编译libcurl库的完整流程,重点解决了集成OpenSSL支持HTTPS功能时的常见配置难题。从环境准备、源码获取、依赖编译到工程配置,提供了清晰的步骤和针对非默认安装路径的避坑指南,帮助开发者高效完成网络库的集成工作。

weixin_29291185的博客 245

Java中的IO流(最详细解说)

IO流一、File类的使用1.常用构造器2.路径分隔符3.常用方法二、IO流原理及流的分类1.Java IO原理三、流的分类1.输入流(1)InputStream & Reader(2)InputStream(3)Reader2.输出流(1)OutputStream & Writer(2)OutputStream(3)Writer3.节点流(1)读取文件1.字符读取FileReader (read(char[] cbuf))2.字节读取FileInputStream (read(byte

spade_Kwo的博客 9605

银河麒麟高级服务器操作系统V10SP2(X86)PXE无人值守批量部署实战指南

本文详细介绍了银河麒麟高级服务器操作系统V10SP2(X86)PXE无人值守批量部署的实战指南。通过PXE网络引导技术,实现全自动化、高效率的系统部署,特别适用于企业级数据中心和国产化替代项目。文章涵盖基础环境准备、关键服务配置、Kickstart高级定制及部署测试等核心内容,帮助用户快速掌握批量部署技巧。

weixin_42525637的博客 383

Java io流 详解

"IO流"(Input/Output stream)指的是Java中用于处理输入输出(I/O)数据的机制。在Java中,所有的输入和输出都被抽象为“流”对象,并通过输入流读取数据、输出流写入数据。Java的I/O包提供了丰富的类和方法来支持不同类型的流,输入流和输出流之间可以自由地进行转换。它们分别主要包括字节流和字符流两种类型。其中,字节流是操作二进制数据的流,可以处理任何类型的数据,常见的例如InputStream和OutputStream;

m0_68987535的博客 5369

AI影像组学在结直肠癌诊疗中的应用:从特征提取到临床决策

影像组学通过高通量计算从医学影像中提取定量特征,揭示肿瘤内部的微观生物学行为,这些特征反映了纹理异质性、形状不规则度等影像表型。其核心原理在于将图像数据转化为可分析的数字特征,结合机器学习算法进行模式识别,从而实现对疾病状态的精准预测。这一技术的价值在于能够无创、定量地评估肿瘤特性,为精准医疗提供关键支持。在临床实践中,AI驱动的影像组学模型广泛应用于结直肠癌的诊疗全链条,包括肿瘤良恶性鉴别、基因突变预测、治疗反应评估和预后分析等场景。通过整合影像组学特征与临床数据,可以构建预测模型,辅助医生进行更准确的诊

weixin_28295799的博客 409

Java:使用Java调用打印机进行打印(JPG、PDF和Word三种文件格式)

目录 一、Java的打印简介 二、Java打印实现 2.1 JPG图片文件格式打印实现 2.2 PDF文件格式打印实现 2.3 Word文件格式打印实现 2.3.1 Word文件采用jacob插件进行打印实现。 2.3.2 先将word转化为pdf文件,然后打印pdf(lz使用) 三、总结 一、Java的打印简介 在我们的实际工作中,经常需要实现打印功能。但由于历史原因,Jav...

vatxiongxiaohui的专栏 8万+

JAVA—IO流详解

IO:Input/Output即输入&输出,也称之为流(河流,水流),指的是数据从一个地点到另一个地点过程;对于计算机来说文件的拷贝过程,文件的编写保存,显示功能都是使用到IO;将数据的传输过程看做一个输入输出。现实角度考虑可以将耳朵作为输入流,将嘴巴当做输出流输入输出介质:文件网络键盘(输入)显示器(输出)

weixin_48006490的博客 8624

YOLOv12改进策略【卷积层】| CVPR-2020 利用DynamicConv 动态卷积 结合A2C2f进行二次创新,提高精度

在大规模视觉预训练中,通常模型的性能受到数据、参数和FLOP三个关键因素的影响。一般来说,模型的参数数量越多,FLOP也越高,但在移动设备等对计算资源有限制的场景下,需要低FLOP的模型同时又希望模型能从大规模预训练中受益。传统的方法很难在增加参数的同时保持低FLOP,因此需要一种新的设计来解决这个问题,模块应运而生。

Limiiiing的博客 827

Java:IO流详解

Java:IO流详解

游手好闲 1万+

7.1华为OD机试真题 新系统 - 仓库盘点 (Java/Py/C/C++/Js/Go)

7.1华为OD机试真题 新系统 - 仓库盘点 (Java/Py/C/C++/Js/Go)

算法大师! 507

Open3D 使用CPD算法对点云配准【2025最新版】

Coherent Point Drift相干点漂移算法实现点云配准(python代码)博客长期更新,本文最近更新时间为:2025年2月2日。

点云侠的博客 8万+

【Java 基础篇】Java IO流详解

本文详细介绍了Java IO流的原理、分类、使用场景和常用类。IO流提供了一种统一的方式来处理输入和输出操作,无论是从文件、网络连接还是内存中。通过使用不同的IO流类,我们可以实现数据的读取和写入,满足不同的需求。希望本文对你理解和应用Java IO流有所帮助!

繁依Fanyi的博客 4707

【异常】OpenClaw报错 400 Total tokens of image and text exceed max message tokens. Request

OpenClaw报错400(Token超限)解决方案摘要 该报错因文本/图片总Token数超过模型限额导致,常见于多轮对话累积或单次请求过大。提供三级解决方案: 应急处理:输入"/new"指令清空会话历史,立即重置Token计数(90%问题可解决) 折中方案:保留历史对话前提下,通过精简当前输入、删除早期无关对话或拆分请求来压缩Token 专属处理:单次请求超限时,拆分长文本为2000字以内段落,或分批次上传降低分辨率图片 长期预防建议定期使用"/new"开启新会话,

奶爸的编程之路,也就一周冷个三天 1391

Java IO流详解

原文 Java IO流详解 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 IO又分为流IO(java.io)和块IO(java.nio) Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库 java.nio中采用的

ss810540895的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

java中的IO流

如果new的File对象所表示的文件或目录并不存在,那么并不会应位new了一个File对象,操作系统就在对应的路径下创建所对应的文件和目录,它仅仅是在JVM的堆中new了一个File对象而已。java为了避免这种类型安全性问题的发生,使序列化接口类在每次编译时,自动生成一个序列化版本ID,用以区别不同的版本,当序列化和反序列化的版本不一致时,就会失败,抛出异常。然而,有些修改并不影响对象的反序列化,如类中加入了新的实例变量,而序列化的数据中并没有新实例变量的值,那么它在反序列化的过程中可以使默认值。

冲出仁川,走出马德里,故事还会再继续 2527

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【Java IO流】IO流详解

IO,即InputOutput,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括磁盘文件、管道、网络连接Java中是通过流处理IO的,那么什么是流?流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道当Java程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是磁盘文件、内存、网络连接等等。类似地,当Java程序需要写入数据的时候,就会开启一个通向目的地的流。

m0_55908255的博客 1695

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java IO流知识点总结

I(Input)O(Output) 通过IO可以处理程序与外部环境之间的数据传输。

weixin_43836337的博客 1869

Java IO流之IO流基础

IO流介绍 IO基础之File类 IO流之字符流 IO流之字节流 IO流之Scanner类

Mr.mooye 2848

Java——IO流

存储和读取数据的解决方案IO流和File是息息相关的。

pangyaqi的博客 1707

java IO流学习总结

学习了几天的java IO流,下面我来谈谈对java 输入输出流IO的个人见解吧! 转载自:https://blog.youkuaiyun.com/zhaoyanjun6/article/details/54292148/ java流类结构图 一.流的概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。它的特性是进行数据传输; 例如从水源地长江把水导入自来水厂,然后又从自...

coder150806的博客 5万+

java基础——IO流

是字节输入流,用于从文件中读取字节数据。int data;= -1) {

2403_87486006的博客 796

IO流【Java】

IO流的系统学习笔记

amazing2024的博客 1163

java 中 IO 流有哪些?

java 中 IO 流有哪些? 按数据流向:输入流和输出流 输入和输出都是从程序的角度来说的。输入流:数据流向程序;输出流:数据从程序流出。 按处理单位:字节流和字符流 字节流:一次读入或读出是8位二进制;字符流:一次读入或读出是16位二进制。 JDK中后缀是Stream是字节流;后缀是Reader,Writer是字符流。 按功能功能:节点流和处理...

ConstXiong 1万+
上一篇: Java其他常用方法
下一篇: Java中的IO补充
地球魔
博客等级 码龄6年 317粉丝 56原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值