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

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);}
}

在这里插入图片描述

相关文章:

  • 2025河南台球展/台球桌展/台球杆展/郑州台尼展会
  • 《深入探秘:从底层搭建Python微服务之FastAPI与Docker部署》
  • 系统编程day04
  • Librosa是什么?用librosa进行多人声纹对比
  • 基于stm32单片机的智能盲杖研究
  • Function Calling、MCP、A2A:解锁 AI 能力的三大核心技术对比
  • go实现钉钉三方登录
  • 获取点击点所在区域所能容纳最大连续空白矩形面积及顶点坐标需求分析及相关解决方案
  • k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件
  • 【大模型面试每日一题】Day 28:AdamW 相比 Adam 的核心改进是什么?
  • STL 标准模板库全面解析:容器、算法与迭代器的核心应用
  • Linux学习心得问题总结(三)
  • 【工具变量】上市公司企业未来主业业绩数据集(2000-2023年)
  • CMake指令:find_package()在Qt中的应用
  • Collection集合遍历的三种方法
  • 大模型应用开发之RAG
  • leetcode106.从中序与后序遍历序列构造二叉树:索引定位与递归分治的完美配合
  • 网络 :序列和反序列化
  • 使用Docker Compose部署Dify
  • Linux `|` 管道操作符深度解析与高阶应用指南
  • 网络项目/百度刷seo关键词排名
  • pub域名怎么做网站/郑州网站制作公司
  • 自己做网站表白/平台做推广的技巧
  • o2o平台是什么意思/迈步者seo
  • 简述创建网站的步骤/广东深圳龙华区
  • 青海高端网站建设/百度推广是做什么的