强哥说Java--IO流(一)

简介: 强哥说Java--IO流(一)

一、File类的使用



File类的使用


java.io.File类: 文件和文件目录路径的抽象表示形式,与平台无关


File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流


想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象, 可能没有一个真实存在的文件或目录


File对象可以作为参数传递给流的构造器


路径分隔符

windows:\

unix:/


常用方法


package com.caq.java;
import org.junit.Test;
import java.io.File;
/**
 * File类的使用
 *
 * 1.File类的一个对象,代表一个文件或一个文件目录
 * 2.File类声明在java.io包下
 *
 *
 *
 *
 */
public class FileDemo01 {
    /**
     1.如何创建File类的实例
        File(String pathname)
        File(String parent,String child)
     2.相当路径:相较于某个路径下,指明的路径
    绝对路径:包含盘符在内的文件或者文件夹的路径
     3.路径分隔符
        windows:\\
        unix:/
     */
    @Test
    public void test1(){
        /**
         public File(String pathname)
         以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果
         pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
             绝对路径:是一个固定的路径,从盘符开始
             相对路径:是相对于某个位置开始
         public File(String parent,String child)
            以parent为父路径,child为 子路径创建File对象。
         public File(File parent,String child)
             根据一个父File对象和子文件路径创建File对象
         */
        //构造器一
        File f1 = new File("hello.txt");//相对于当前moudle
        File f2 = new File("D:\\Code\\he.txt");//加两个杠是因为不想让它进行转义
        System.out.println(f1);
        System.out.println(f2);
        //构造器二
        File f3 = new File("\\Code", "test");
        System.out.println(f3);
        //构造器三
        File f4 = new File(f3,"hello.txt");
        System.out.println(f4);
    }
}


二、IO流原理及流的分类



JavaIO原理

I/O是Input/Output的缩写,I/O技 术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等


Java程序中,对于数据的输入/输出操作以==“流(stream“==的方式进行


java.io包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。


输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中


输出output:将程序(内存) 数据输出到磁盘、光盘等存储设备中


image.png


流的分类

按操作数据单位不同分为:字节流(8bit),字符流(16bit)


字节就是一个byte(010101),常用来处理图片啊,视频啊之类的


一个一个的char(2个字节),常用来处理字符,比如文本之类的


按数据流的流向不同分为:输入流,输出流


输入:读取外部数据到内存中


输出:将内存中数据输出到磁盘,光盘等位置


按流的角色的不同分为:节点流,处理流


节点流:流直接作用在节点上


处理流:流作用在已有的流上的


流的分类


image.png


节点流和处理流

节点流 :直接从数据源或目的地读写数据


image.png


处理流:不直接连接到数据源或目的地,而是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。


image.pngimage.png



InputStream & Reader

InputStream和Reader是所有输入流的基类


InputStream (典型实现: FileInputStream)


int read()

int read(byte[] b)

int read(byte[] b, int off, int len)


Reader (典型实现: FileReader )


int read()

int read(char [] c)

int read(char 0 C, int off, int len)



程序中打开的文件IO资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件IO资源


FileInputStream从文件系统中的某个文件中获得输入字节FileInputStream用于读取非文本数据之类的原始字节流。要读取字符流,需要使用FileReader


InputStream

int read()

从输入流中读取数据的下一个字节。返回0到255范围内的int字节值。如果因为己经到达流末尾而没有可用的字节,则返回值-1


int read(byte[] b)

从此输入流中将最多b.length 个字节的数据读入一个byte数组中。如果因为已经到达流末尾而没有可用的字节,则返回值-1。否则以整数形式返回实际读取的字节数。


int read(byte[] b, int off,int len)

将输入流中最多len 个数据字节读入byte 数组。尝试读取len个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。如果因为流位于文件末尾而没有可用的字节,则返回值-1。


public void close() throws lOException

关闭此输入流并释放与该流关联的所有系统资源


Reader

int read()

读取单个字符。作为整数读取的字符,范围在0到65535之间(0x00-0ffff (2个字节的Unicode码),如果已到达流的末尾,则返回-1


int read(char[] cbuf)

将字符读入数组。如果已到达流的末尾,则返回-1。否则返回本次读取的字符数。


int read(char[] cbuf,int off,int len)

将字符读入数组的某一部分。 存到数组cbuf中,从off处开始存储,最多读len个字符。如果已到达流的末尾,则返回-1。否则返回本次读取的字符数。


public void close() throws l0Exception

关闭此输入流并释放与该流关联的所有系统资源。


OutputStream & Writer

OutputStream


Writer

相关文章
|
18天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
10天前
|
云安全 人工智能 安全
Dify平台集成阿里云AI安全护栏,构建AI Runtime安全防线
阿里云 AI 安全护栏加入Dify平台,打造可信赖的 AI
|
13天前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
1071 37
|
12天前
|
机器学习/深度学习 人工智能 搜索推荐
万字长文深度解析最新Deep Research技术:前沿架构、核心技术与未来展望
近期发生了什么自 2025 年 2 月 OpenAI 正式发布Deep Research以来,深度研究/深度搜索(Deep Research / Deep Search)正在成为信息检索与知识工作的全新范式:系统以多步推理驱动大规模联网检索、跨源证据。
835 56
|
10天前
|
文字识别 测试技术 开发者
Qwen3-VL新成员 2B、32B来啦!更适合开发者体质
Qwen3-VL家族重磅推出2B与32B双版本,轻量高效与超强推理兼备,一模型通吃多模态与纯文本任务!
717 11
|
4天前
|
人工智能 数据可视化 Java
Spring AI Alibaba、Dify、LangGraph 与 LangChain 综合对比分析报告
本报告对比Spring AI Alibaba、Dify、LangGraph与LangChain四大AI开发框架,涵盖架构、性能、生态及适用场景。数据截至2025年10月,基于公开资料分析,实际发展可能随技术演进调整。
293 4
下一篇
开通oss服务