【JAVA基础】 IO详解

这篇具有很好参考价值的文章主要介绍了【JAVA基础】 IO详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【JAVA基础】 IO详解

一、概述

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。既数据在两个设备之间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

二、IO流的作用

实现两个对象设备之间的数据传递。

三、IO流的使用场景

  1. 当我们使用File类时只能实现对文件的操作,包括:获取文件属性,创建、删除,移动文件等等,但不能对文件的内容做出改动。如果想对文件内容操作的话,需要读取,删除文件内容等
  2. IO流的使用场景:需要对一个文件内容进行操作的时候。

IO流的操作对象是一个文件,而不是对一个文件夹进行读写的。 在使用IO流的时候注意不要与一个文件夹建立连接

四、IO流的分类

按照不同的分类标准分为不同的IO流:

4.1 传输数据的单位分:
  • 字节流: 传输的是字节,是以字节为单位的,字节流读取的最小单位是一个字节(1byte=8bit)。 可以操作任意类型的数据。
  • 字符流: 传输的是字节,一次可以读取一个字符(1char = 2byte = 16bit), 不同点是在传输过程中加入了编码的操作,让我们的操作更方便文本。
4.2 数据传输的方向分:
  • **输入流input:**读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中
  • **输出流output:**将程序(内存)数据输出到磁盘、光盘等存储设备中
4.3 流的角色的不同分:
  • 节点流: 直接从一个源读写数据的流(这个流没有经过包装和修饰),处理流是在对节点流封装的基础上的一种流。FileInputStream是一个节点流,可以直接从文件读取数据,但是BufferedInputStream可以包装 FileInputStream,使得其有缓冲功能。
  • 处理流: 它用于对一个已存在的节点流进行连接和封装,通过封装后的流来实现流的读写能力。当使用处理流时,程序不会直接连接到实际的数据源,而是连接在已存在的流之上

五、IO流体系

分类 字节输入流 字节输出流 字符输入流 字符输出流
抽象基类 InputStream OutputStream Reader Writer
访问文件 FileInputStream FileOutputStream FileReader OutWriter
访问数组 ByteArrayInputStream ByteArrayOutputStream CharArrayReader CharArrayWriter
访问管道 PipedInputStream PipedOutputStream PipedReader PipeWriter
访问字符串 InputStreamReader OutputStreamWriter
缓冲流 BufferedInputStream BufferedOutputStream BufferedReader BufferedWriter
转换流 InputStreamReader OutputSteamReader
对象流 ObjectInputStream ObjectOutputStream
FilterInputStream FilterOutputStream FilterReader FilterWriter
打印流 PrintStream PrintWriter
推回输入流 PushbackInputStream PushbackReader
特殊流 DataInputStream DataOutputStream

六、字节输入流InputStream

InputStream是一个虚拟类,在Java中是字符输入流,用来将文件中的数据读取到java程序中。

最常用的方法是:FileInputStream

  • 常用方法

    1. int read():从文件中读取一个字节数的数据。并返回读取到的这个字节。如果读取结束,返回是-1;
    2. int read(byte[] b):一次读取一个字节数组,输入流会把读到的内容放入到这个字节数组中,并返回读取到的一个数,如果读取结束返回-1;
    3. void close();关闭字节流;
  • FileInputStream实现步骤

    1. 创建一个FileInputStream流对象,绑定一个数据源文件
    2. 调用read方法读取数据
    3. 释放资源
  • 示例代码

    public  void inputStreamMethod() throws Exception  {
         FileInputStream in=new FileInputStream("D:\\goyeer.txt");
         //创建Fileinptstream 流对象,并绑定源文件
         byte[] buf=new byte[1024];
         int len;
         //调用read方法读取数据
         while((len=in.read(buf))!= -1){
             String line=new String(buf,0,len,"UTF-8");
             System.out.println(line);
         }
    }
    
  • InputStream体系
    【JAVA基础】 IO详解,JAVA,java,前端,算法

七、字节输出流 OutputStream

OutputStream类是Java IO API中所有输出流的基类。子类包括BufferedOutputStream,FileOutputStream等等。OutputStream是一个典型的装饰模式,使用时候直接new子类。OutputStream可以输出console,文件、磁盘等目标媒介中。

  • 常用方法

    1. void close(); 关闭输出流防止资源被大量占用,最终导致超出句柄或内存溢出。
    2. void write(int b);抽象类中唯一的抽象方法。非抽象子类必须实现这个方法。
    3. void write(byte b[])直接输出一个字节数组中的全部内容。
    4. void write(byte b[], int off, int len) 要输出的内容已存储在了字节数组b[]中,但并非全部输出,只输出从数组off位置开始的len个字节。
    5. void lush()刷空输出流,并输出所有被缓存的字节。由于某些流支持缓存功能,该方法将把缓存中所有内容强制输出到流中。
  • OutputStream实现步骤

    1. 创建一个OutputStream流对象
    2. write方法输入
    3. close关闭流防止内存有溢出
  • 示例代码

     public void outputStreamMethod() throws IOException{
            OutputStream ou=new FileOutputStream("D:\\ShowCoding.txt");
            String str = "欢迎Goyeer社区";
            byte[] bytes = str.getBytes();
            for(int i = 0; i < bytes.length; i++) {
                ou.write(bytes[i]);
            }
            ou.close();
      }
    
  • OutputStream体系
    【JAVA基础】 IO详解,JAVA,java,前端,算法

八、字符输入流Reader

Reader是输入字符流的父类,它是一个抽象类,在文件读写是不推荐使用

  • 常用方法

    1. void close();关闭流并释放与之关联的所有资源;
    2. void mark(int readAheadLimit);标记流中的当前位置;
    3. boolean markSupported();判断此流是否支持mark()操作;
    4. int read();读取单个字符;
    5. int read(char[] cbuf); 将字符读入数组;
    6. int read(char[] cbuf, int off, int len);将字符读入数组的某一部分;
    7. int read(CharBuffer target) ;试图将字符读入指定的字符缓冲区
    8. boolean ready() ;判断是否准备读取此流;
    9. void reset();重置该流
    10. long skip(long n);跳过字符
  • Reader实现步骤

    1. 创建一个文件读取流对象与指定名称的文件相关联起来;保证文件已存在。当文件不存在时,会发生异常(FileNotFoundException);
    2. 调用读取流对象的read方法,一次读取一个字符,自动往后读取字符;
    3. 调用方法,关闭字符流;
  • 示例代码

    public static void readerMethod() throws IOException{
        Reader reader=new FileReader("D:\\goyeer.txt");
        int ch = 0;
        char [] buf= new char[1024];
        while((ch=reader.read(buf))!=-1){
             System.out.print(new String(buf,0,ch));
        }
        reader.close();
    }
    
  • Reader体系
    【JAVA基础】 IO详解,JAVA,java,前端,算法

九、字符输出流程Writer

Writer类是Java IO中所有Writer的基类,它位于java.io包下面的一个抽象类。实现Writer的实现子类,包含BufferedWriter和PrintWriter.

  • 常用方法

    1. Writer append(char c) 将指定字符添加到此 write
    2. Writer append(CharSequence csq) 将指定字符序列添加到此 writer
    3. Writer append(CharSequence csq, int start, int end) 将指定字符序列的子序列添加到此 writer.Appendable
    4. abstract void close() 关闭此流,但要先刷新它
    5. abstract void flush() 刷新该流的缓冲
    6. void write(char[] cbuf) 写入字符数组
    7. abstract void write(char[] cbuf, int off, int len) 写入字符数组的某一部分
    8. void write(int c) 写入单个字符
    9. void write(String str) 写入字符串
    10. void write(String str, int off, int len) 写入字符串的某一部分
  • Writer实现步骤

    1. 通过子类实例化Writer
    2. 通过write方法实现文件写入操作
    3. close关闭输出流,释放资源。
  • 示例代码

    public static  void writeMethod() throws IOException {
       Writer out = new FileWriter("D:\\goyeer.log");
       String str = "I/O字符流,Writer类应用。";        
       out.write(str);
       out.close();
    }
    
  • Writer体系
    【JAVA基础】 IO详解,JAVA,java,前端,算法

十、总结

Java IO既Java输入输出系统,即in和out,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。在编写程序时选择适合自己场景的字节流和字符流,及abstract的子类灵活使用。文章来源地址https://www.toymoban.com/news/detail-666470.html

到了这里,关于【JAVA基础】 IO详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JAVA—IO流详解

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

    2024年02月09日
    浏览(30)
  • Java io流 详解

    \\\"IO流\\\"(Input/Output stream)指的是Java中用于处理输入输出(I/O)数据的机制。 在Java中,所有的输入和输出都被抽象为“流”对象,并通过输入流读取数据、输出流写入数据。 Java的I/O包提供了丰富的类和方法来支持不同类型的流,输入流和输出流之间可以自由地进行转换。它们

    2024年02月09日
    浏览(30)
  • Java基础--->IO流(2)【常见IO模型】

    根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控制器、存储器、输入设备、输出设备。 从计算机结构的视角来看的话, I/O 描述了计算机系统与外部设备之间通信的过程。 IO (Input/Output) 通常是指计算机与外部设备之间的数据交换过程。输入设备(如键盘、鼠标、

    2024年02月06日
    浏览(32)
  • Java中的IO流详解

    先看文章目录,大致了解知识点结构,直接点击文章目录可以跳转到文章指定位置。 1.File类 ①File类简介:Java把现实存在的文件和目录路径名描述成一个File类类。 ②File类只是对持久设备上的文件和文件夹进行操作。不能去操作文件中的数据。要操作数据需要使用IO技术。

    2024年02月15日
    浏览(33)
  • 【Java 基础】File & IO流

    java.io.File类是文件和目录路径名的抽象表示形式,主要用于文件和目录的创建、查找和删除等操作。 File:它是文件和目录路径名的抽象表示 文件和目录可以通过File封装成对象 File封装的对象仅仅是一个路径名。它可以是存在的,也可以是不存在的。 | 方法名 | 说明 | | —

    2024年02月05日
    浏览(35)
  • 【12章 Java IO流】程序员必看 IO流 详解

    ❤爱在开头 ❤博客主页: 努力的小鳴人 ❤系列专栏: JavaSE超详总结😋 ❤欢迎小伙伴们, 点赞👍关注🔎收藏🍔 一起学习! ❤如有错误的地方,还请小伙伴们指正!🌹 🔥系列传送门 : JavaSE超详总结😋 【附章5计算机字符编码】多种字符编码集的说明【热榜】 【11章J

    2023年04月16日
    浏览(37)
  • Java基础(十七)File类与IO流

    1.1 概述 File类及本章下的各种流,都定义在java.io包下。 一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象) File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本

    2024年02月02日
    浏览(38)
  • 【Java|基础篇】File类和IO流

    File类是Java中用于表示文件或目录的类。它提供了一些方法来操作文件和目录的属性和内容,可以进行文件的创建、删除、重命名等操作。 File类可以用于表示磁盘上的实际文件或目录,也可以表示一个虚拟的文件或目录。File对象可以通过路径来创建,路径可以是绝对路径或

    2024年02月15日
    浏览(32)
  • Java-IO流基础知识

    目录 1.File类与路径知识 1.File类 2.Java中的路径知识 3.创建File类的实例 4.File类的方法使用 5.File类使用的注意点 2.IO流知识 1.IO流原理 2.文件的读入 3.read()的重载方法:难点 4.文件的写出 1.写出的说明 2.写出操作的具体步骤 5.文件的复制:先读出在写入 6.字节流FileInputStream和Fi

    2024年02月09日
    浏览(46)
  • Java基础——IO流之字符集

    (1)IO前置内容:字符集 1.字符集基础知识: 计算机底层不可以直接存储字符,只能存储二进制(0,1)。 二进制可以转换成十进制。 计算机底层可以表示十进制编号。计算机可给人类字符进行编号存储,这套编号规则就是字符集。 2.ASCII字符集:(1字节) ASCII(American S

    2023年04月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包