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

Javase 基础加强 —— 07 File

本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员Java+AI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。

01 存储数据的方案

在这里插入图片描述

在这里插入图片描述

变量、数组、对象、集合这些数据容器都在内存中,一旦程序结束,或者断电,数据就没有了!

在这里插入图片描述

File在磁盘中,数据会一直存在。

Filejava.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)

在这里插入图片描述

注:File类只能对文件本身进行操作,不能读写文件里面存储的数据,IO流才能真正读写数据!

IO流是用于读写数据的(可以读写文件,或网络中的数据…)

在这里插入图片描述

02 FILE

在这里插入图片描述

注意:

  • File对象既可以代表文件、也可以代表文件夹。
  • File封装的对象仅仅是一个路径名,路径可以是存在的,也允许是不存在的。

在这里插入图片描述

package FileDemo;import java.io.File;
import java.io.IOException;public class FileDemo1 {public static void main(String[] args) throws IOException {//目标:认识File类和对象//1.创建File对象,获取文件信息File f1 = new File("E:\\临时传图专用\\123.png");System.out.println(f1.length());System.out.println(f1.getName());System.out.println(f1.isFile()); //trueSystem.out.println(f1.isDirectory()); //false//2.相对路径:当前文件夹寻找//  绝对路径:电脑磁盘符寻找//3.创建File对象,代表不存在的文件File f2 = new File("E:\\临时传图专用\\456.png");System.out.println(f2.exists());System.out.println(f2.createNewFile());//4.创建File对象,代表不存在的文件路径//注:mkdir只能创建一级文件夹,mkdirs可以创建多级文件夹File f3 = new File("E:\\临时传图专用\\aaa");System.out.println(f3.mkdir());File f4 = new File("E:\\临时传图专用\\bbb\\ccc\\ddd");System.out.println(f4.mkdirs());//5.创建File对象,删除文件/文件夹//注:delete只能删除非空文件夹,不进回收站File f5 = new File("E:\\临时传图专用\\456.png");System.out.println(f5.delete());File f6 = new File("E:\\临时传图专用\\aaa");System.out.println(f6.delete());//6.遍历,获取某文件夹下的全部一级文件名称File f7 = new File("E:\\JS");String[] names = f7.list();for(String name : names){System.out.println(name);}File[] files = f7.listFiles();for(File file : files){System.out.println(file.getAbsoluteFile()); //获取绝对路径}}
}

在这里插入图片描述

03 认识递归

方法调用自身的形式称之为方法递归。

递归 = 递归式 + 递归边界

在这里插入图片描述

04 递归流程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

package FileDemo;public class RecursionDemo1 {public static void main(String[] args) {System.out.println(eatPeach(1));}public static int eatPeach(int day){//递归边界if(day == 10){return 1;}//递归公式//f(n + 1) = f(n) / 2 - 1//f(n) = (f(n + 1) + 1) * 2return (eatPeach(day + 1) + 1) * 2;}
}

在这里插入图片描述

05 文件搜索

D:盘中,搜索"QQ.exe"这个文件,找到后直接输出其位置。

package FileDemo;import java.io.File;public class RecursionDemo1 {public static void main(String[] args) {File dir = new File("E:/");searchFile(dir, "vue.js");}public static void searchFile(File dir, String fileName){if(dir == null || !dir.exists() || dir.isFile()){return;}File[] files = dir.listFiles();if(files != null && files.length != 0){for(File file : files){//file是文件if(file.isFile()){if(file.getName().contains(fileName)){System.out.println("找到目标文件:" + file.getAbsolutePath());}}//file是文件夹else{searchFile(file, fileName);}}}}
}
  • dir == null:防止传入空值,避免空指针异常;
  • !dir.exists():目录不存在,没法继续递归;
  • dir.isFile():判断传入的dir是不是一个文件,不是目录。

06 常见字符集介绍

在这里插入图片描述

标准ASCII字符集

  • ASCII(American Standard Code for Information Interchange)为美国信息交换标准代码,包括了英文、符号等。
  • 标准ASCII使用1个字节存储一个字符,首位是0,因此,总共可表示128个字符,对美国佬来说完全够用。

国标GBK字符集

汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储。

注:GBK兼容了ASCII字符集。

在这里插入图片描述

在这里插入图片描述

万国码 Unicode 字符集
Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集。

在这里插入图片描述

UTF-8字符集

UTF-8字符集是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节。

注:英文字符、数字等只占1个字节(兼容标准ASCII编码),汉字字符占用3个字节。

在这里插入图片描述

在这里插入图片描述

注:

① 字符编码时使用的字符集,和解码时使用的字符集必须一致,否则,出现乱码。

② 英文、数字一般不会乱码,因为很多字符集都兼容了ASCII编码。

07 编码和解码操作

在这里插入图片描述

package FileDemo;import java.io.UnsupportedEncodingException;
import java.util.Arrays;public class CharSetDemo1 {public static void main(String[] args) throws UnsupportedEncodingException {//目标:实现字符编码 + 解码//1.编码String name = "我爱你中国abc666";byte[] bytes1 = name.getBytes(); //默认UTF-8编码byte[] bytes2 = name.getBytes("GBK");System.out.println(bytes2.length);System.out.println(Arrays.toString(bytes2));//2.解码String name2 = new String(bytes2, "GBK");System.out.println(name2);}
}

在这里插入图片描述

http://www.xdnf.cn/news/8756.html

相关文章:

  • 云原生安全基石:Linux进程隔离技术详解
  • 2025最新智能优化算法:野燕麦优化算法(Animated Oat Optimization Algorithm, AOO),MATLAB代码
  • JavaSE核心知识点03高级特性03-04(Lambda表达式)
  • 产品迭代与放弃的判断:MVP、PMF 与 Scale Fit 的三重验证
  • VS编码访问Mysql数据库
  • 数据库范式
  • 易贝平台关键字搜索技术深度解析
  • Lesson 21 Mad or not
  • 2024 CKA模拟系统制作 | Step-By-Step | 4、题目搭建-权限控制RBAC
  • 数据库MySQL进阶
  • 【C++】封装红黑树实现 mymap 和 myset
  • 实现Web网站冷启动的全面指南
  • LeetCode 3362.零数组变换 III:贪心+优先队列+差分数组——清晰题解
  • 天猫平台实时商品数据 API 接入方案与开发实践
  • 【时时三省】Python 语言----字符串,列表,元组,字典常用操作异同点
  • Interviews(访谈):业务分析师的“信息开采器”
  • LangGraph 实战指南:长期记忆管理
  • CMSIS-NN:1.简介
  • 【大模型报错解决】cublasLt ran into an error!
  • 开疆智能Profinet转Profibus网关连接DP-IO模块配置案例
  • 水利水电安全员B证职责
  • SpringBoot入门
  • 快速解决Linux 中yum镜像拉取失败问题
  • 算法题(154):合并果子
  • 鸿蒙密码生成器开发笔记
  • C++ 正则表达式简介
  • 广东省省考备考(第十九天5.24)—申论(听课后强化训练)
  • docker虚拟化、容器化
  • 轻量化开源方案——浅析PdfPatcher实际应用
  • 21 程序控制语句详解:循环控制(while、do-while、for、循环机制与原理、嵌套循环)