当前位置: 首页 > news >正文

黑马JAVA+AI 加强08 File-IO流

1.File-IO流

  • 将数据存在内存
    在这里插入图片描述
  • 将数据存在外存(硬盘)
    在这里插入图片描述
    1.1操作文件和文件夹
  • File类比快递盒,可以获取盒子的大小,标签,重量之类的属性等
    在这里插入图片描述
    1.2 IO流
  • IO 流(Input/Output Stream)本质上就是内存与外部存储(如硬盘、U 盘、网络等)之间交换数据的 “通道”,负责数据的 “输入”(从外部读入内存)和 “输出”(从内存写入外部)。
    在这里插入图片描述

2.File类

  • java.io.File 类是 Java 中用于操作文件和目录路径的工具类,它并不直接读写文件内容,而是用于管理文件 / 目录的元信息(如路径、名称、大小、创建时间等)及目录结构(如创建、删除、判断存在性等)。
  • 核心作用
    • 封装文件或目录的路径信息(绝对路径 / 相对路径)。
    • 提供方法操作文件 / 目录的属性(如判断是否存在、是否为文件 / 目录、获取大小等)。
    • 提供方法操作目录结构(如创建文件夹、删除文件 / 目录、列出子文件等)。
      在这里插入图片描述
      代码案例
public class FileConstructorDemo {public static void main(String[] args) {// 1. 构造器:public File(String pathname)// 根据完整文件路径创建File对象(可代表文件或文件夹)File file1 = new File("D:\\test\\example.txt");System.out.println("文件1路径:" + file1.getPath());// 2. 构造器:public File(String parent, String child)// 父路径(文件夹) + 子路径(文件/子文件夹)String parentDir = "D:\\test";String childFile = "sub\\demo.txt";File file2 = new File(parentDir, childFile);System.out.println("文件2路径:" + file2.getPath());// 3. 构造器:public File(File parent, String child)// 父路径对应的File对象 + 子路径(文件/子文件夹)File parentFile = new File("D:\\test");File file3 = new File(parentFile, "image\\pic.jpg");System.out.println("文件3路径:" + file3.getPath());// 验证:File对象可代表不存在的路径File nonExistFile = new File("D:\\test\\nonexist\\temp.txt");System.out.println("不存在的路径是否有效:" + nonExistFile.exists()); // 输出false}
}
public class FileDemo {public static void main(String[] args) {// 1. 创建File对象(封装一个路径,路径可存在或不存在)File file = new File("D:/test/demo.txt"); // 绝对路径File dir = new File("data/docs"); // 相对路径(相对于项目根目录)// 2. 基本属性操作System.out.println("文件路径:" + file.getPath()); // 获取构造器传入的路径System.out.println("绝对路径:" + file.getAbsolutePath()); // 获取绝对路径System.out.println("文件名称:" + file.getName()); // 获取文件名(含后缀)System.out.println("父目录:" + file.getParent()); // 获取父目录路径// 3. 判断性方法System.out.println("是否存在:" + file.exists()); // false(假设路径不存在)System.out.println("是否为文件:" + file.isFile()); // falseSystem.out.println("是否为目录:" + dir.isDirectory()); // false// 4. 创建与删除操作try {// 创建文件(若父目录不存在,创建失败)boolean isFileCreated = file.createNewFile(); System.out.println("文件创建成功?" + isFileCreated);// 创建目录(mkdir():只能创建单级目录;mkdirs():可创建多级目录)boolean isDirCreated = dir.mkdirs(); System.out.println("目录创建成功?" + isDirCreated);} catch (IOException e) {e.printStackTrace();}多级目录/ 目标:创建多级目录 "D:/test/aaa/bbb/ccc"// 假设 D:/test 可能存在,也可能不存在,aaa/bbb/ccc 均不存在File multiDir = new File("D:/test/aaa/bbb/ccc");// 使用 mkdirs() 创建所有不存在的目录(包括父目录)boolean isCreated = multiDir.mkdirs();// 5. 列出目录下的内容if (dir.exists() && dir.isDirectory()) {String[] subNames = dir.list(); // 列出子文件/目录的名称File[] subFiles = dir.listFiles(); // 列出子文件/目录的File对象System.out.println("目录下的内容数量:" + (subNames != null ? subNames.length : 0));}使用listFiles方法时的注意事项:1.当主调是文件,或者路径不存在时,返回null2.当主调是空文件夹时,返回一个长度为 0 的数组3.当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回4.当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件5.当主调是一个文件夹,但是没有权限访问该文件夹时,返回null// 6. 删除操作(删除文件或空目录,非空目录需先删除内容)boolean isFileDeleted = file.delete();boolean isDirDeleted = dir.delete();System.out.println("文件删除成功?" + isFileDeleted);System.out.println("目录删除成功?" + isDirDeleted);}
}

2.1小结
在这里插入图片描述
3.递归
在这里插入图片描述
3.1递归是一种编程思想,指一个函数(或方法)直接或间接调用自身的过程,用于将复杂问题分解为规模更小的同类子问题,直到子问题简单到可以直接解决(即 “递归终止条件”)。

核心要素

  • 递归终止条件:明确何时停止递归,避免无限循环(例如 “当 n=1 时返回结果”)。
  • 递归调用:将原问题分解为更小的子问题,通过调用自身解决子问题。
  • 典型案例:计算阶乘
    阶乘公式:n! = n × (n-1) × (n-2) × … × 1(0! = 1)
public class Factorial {public static int factorial(int n) {// 递归终止条件:n=0或n=1时,直接返回1if (n == 0 || n == 1) {return 1;}// 递归调用:n! = n × (n-1)!return n * factorial(n - 1);}public static void main(String[] args) {System.out.println(factorial(5)); // 输出:120(5×4×3×2×1)}
}
http://www.dtcms.com/a/549983.html

相关文章:

  • (XMODEM协议)自旋锁异常报错
  • 关于光照探针的实验和疑问
  • 校园网站建设的优点wordpress最新文章链接插件
  • 南城网站建设公司策划山东省建设执业资格注册中心网站
  • 【机器学习】模型持久化与部署
  • 「用Python来学微积分」21. 玩转高阶导数
  • 不谈AI模型,只谈系统:SmartMediaKit低延迟音视频技术现实主义路线
  • 哪些证书对学历没硬性要求?高职生必看
  • 公司网站做推广做商城型网站
  • PyQt5 QSet完全指南:深入理解Qt的高性能集合容器
  • 乡村旅游电子商务网站建设有网站怎么做淘宝客
  • 狭小空间难嵌入?这款寻北仪重新定义新标准!
  • 成华区网站建设公司软件工程最好的出路
  • 网站的关键词怎么选择工信部网站登陆
  • Rust 复合类型深度解析:从元组与数组看内存安全与抽象设计
  • ASTMD4169对于医疗冷链包装在空陆联运中的测试验证
  • g++/gcc编译器与自动化构建make/Makefile
  • 高性能人工智能目标检测开山篇----YOLO v1算法详解(上篇)
  • 【文字库】新华字典部分年份出版汇总
  • 个体工商户备案网站备案wordpress推广
  • 设计师网站推荐wordpress换域名安装
  • 搭建 k8s
  • 【MCU控制 初级手札】1.5 化学键(离子键、共价键、金属键)与化合价 【化学基础】
  • Rust与Python完全指南:从零开始理解两门语言的区别与关系
  • 服务器硬盘的作用都有哪些?
  • flash网站源码48快装旧房翻新公司电话
  • 【PID】连续PID和数字PID chapter1(补充) 学习笔记
  • 哈希——unordered_map以及unordered_set的封装
  • Java 的演进与现代应用:从经典语言到云时代中坚力量
  • Slicer中启动器的生成过程