首页 > 编程语言 >Java之IO流

Java之IO流

时间:2025-01-04 18:23:37浏览次数:7  
标签:字符 Java 字节 路径 IO FileInputStream

IO流概述

什么是IO流?

  • IO流指的是:程序中数据的流动。数据可以从内存流动到硬盘,也可以从硬盘流动到内存。

  • Java中IO流最基本的作用是:完成文件的读和写。

IO流的分类?

image-20250104173458797

  • 根据数据流向分为:输入和输出是相对于内存而言的。

    • 输入流:从硬盘到内存。(输入又叫做读:read)

    • 输出流:从内存到硬盘。(输出又叫做写:write)

  • 根据读写数据形式分为:

    • 字节流:一次读取一个字节。适合读取非文本数据。例如图片、声音、视频等文件。(当然字节流是万能的。什么都可以读和写。)
    • 字符流:一次读取一个字符。只适合读取普通文本。不适合读取二进制文件。因为字符流统一使用Unicode编码,可以避免出现编码混乱的问题。

​ 注意:Java的所有IO流中凡是以Stream结尾的都是字节流。凡是以Reader和Writer结尾的都是字符流。

  • 根据流在IO操作中的作用和实现方式来分类:
    • 节点流:节点流负责数据源和数据目的地的连接,是IO中最基本的组成部分。
    • 处理流:处理流对节点流进行装饰/包装,提供更多高级处理操作,方便用户进行数据处理。
  • Java中已经将io流实现了,在java.io包下,可以直接使用。

image-20250104172125181

IO流体系结构

  • 以下4种常用流,都是抽象类,是所有IO流的四大头领!

    1. InputStream:字节输入流
    2. OutputStream:字节输出流
    3. Reader:字符输入流
    4. Writer:字符输出流
  • 所有的流都实现了Closeable接口,都有close()方法,流用完要关闭。

  • 所有的输出流都实现了Flushable接口,都有flush()方法,flush方法的作用是,将缓存清空,全部写出。养成好习惯,以防数据丢失。

image-20250104180023355

文件路径

绝对路径

FileInputStream in = new FileInputStream("D:/code/filePath.txt");

相对路径

// 在IDEA工具中,默认的当前路径是project的根。(项目的根就是当前路径)
FileInputStream in = new FileInputStream("log");

类路径

// 优点:在进行系统移植的时候,这种方式仍然是通用的,适应性强。
// 缺点:资源必须放在类路径当中。如果没有在类路径下,是无法加载到的。

// 表示当前路径就是类的根路径,自动从类的根路径下开始加载资源。
String path = Thread.currentThread().getContextClassLoader().getResource("test/file").getPath();
FileInputStream in = new FileInputStream(path);

标签:字符,Java,字节,路径,IO,FileInputStream
From: https://www.cnblogs.com/growingbambi/p/18652220

相关文章

  • 【java-数据结构篇】神奇 ArrayList,一键打印扑克牌花色与点数
    我的个人主页我的专栏:Java-数据结构,希望能帮助到大家!!!点赞❤收藏❤前言:在编程的奇妙世界里,数据结构如同精巧的积木,搭建起各类功能的大厦。而ArrayList,作为其中一块极为实用的“积木”,拥有着独特的魅力与强大的功能。当我们将目光投向生活中的趣味场景——扑克牌......
  • [2615]基于JAVA的纸箱销售智慧管理系统的设计与实现
    毕业设计(论文)开题报告表姓名学院专业班级题目基于JAVA的纸箱销售智慧管理系统的设计与实现指导老师(一)选题的背景和意义在当前信息化时代,企业管理和运营方式正在经历着深刻的变革。随着大数据、云计算等技术的发展,智慧管理系统的应用日益广泛。然而,在纸箱销售行业,许多企......
  • java饲料出售平台论文+源码 2025毕设
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容饲料出售平台研究相关内容一、研究背景随着畜牧业、渔业等相关产业的不断发展,饲料的需求日益增长。当前市场上饲料供应与需求之间的信息对接存在一定的障碍,......
  • java高校班主任班级管理系统论文+源码 2025毕设
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今的高校教育环境中,随着高校规模的不断扩大和学生人数的日益增多,传统的班级管理方式面临着诸多挑战。高校班主任作为班级管理的核心人物,需要......
  • Mixed Precision Training
    目录概主要内容NarangS.,DiamosG.,ElsenE.,MicikeviciusP.,AlbenJ.,GarciaD.,GinsburgB.,HoustonM.,KuchaievO.,VenkateshG.andWuH.Mixedprecisiontraining.ICLR,2018.概本文提出了混合精度训练.主要内容从FP32到FP16的一个重要问题是,......
  • 高校就业招聘小程序|Java|SpringBoot|VUE| 前后端分离
                  【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SpringBoot、Mybatis-Plus、VUE、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apa......
  • 流浪动物领养小程序|Java|SpringBoot|VUE| 前后端分离
                  【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SpringBoot、Mybatis-Plus、VUE、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apa......
  • 机电公司小程序|Java|SpringBoot|VUE| 前后端分离
                  【技术栈】1⃣️:架构:B/S、MVC2⃣️:系统环境:Windowsh/Mac3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7+4⃣️:技术栈:Java、Mysql、SpringBoot、Mybatis-Plus、VUE、jquery,html5⃣️数据库可视化工具:navicat6⃣️服务器:SpringBoot自带apa......
  • vue数据请求通用方案:axios的options都有哪些值
    Axios是一个基于promise的HTTP库,可以用在浏览器和Node.js中。在使用Axios发送请求时,可以通过传递一个配置对象来指定请求的各种选项。以下是一些常用的Axios配置选项及其说明:1.url:(必需)请求的URL。url:'/user'2.method:(可选,默认为GET)请求方法。method......
  • 开发规范JAVA-v1.0_.241127
    一、编程规约(一)命名风格【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name/_name/$Object/name/name$/Object$【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。说明:正确的英文拼写和......