黑马教程强化day3-1

目录

  • 一、File
    • 1.定义:
    • 2.创建File类的对象
    • 3.File提供的判断文件类型、获取文件信息功能
    • 4.File提供的创建的方法
    • 5.File类删除文件的功能
    • 6.File提供的遍历文件夹的方法
    • 代码演示
  • 二、递归(了解递归算法,以便实现多级遍历找文件)
    • 1.定义
    • 2.递归的形式
    • 3.递归三要素
    • 代码演示
    • 4.文件搜索(重要)
  • 三、字符集
    • 1. 标准ASCII字符串
    • 2.GBK(汉字内码扩展规范,国标)
    • 3.Unicode字符集(统一码,也叫万国码)
    • 4.对字符的编码
    • 5.对字符的解码
    • 代码演示

一、File

1.定义:

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

2.创建File类的对象

  • public File(String pathname):根据文件路径创建文件对象。
  • public File(String parent,String child):根据父路径和子路径名字创建文件对象。
  • public File(File parent,String child):根据父路径对应文件对象和子路径名字创建文件对象。

3.File提供的判断文件类型、获取文件信息功能

  • public boolean exists():判断当前文件对象,对饮的文件路径是否存在,存在返回True。
  • public boolean isFile():判断当前文件对象指代的是否是文件,是返回True。
  • public boolean isDirectory():判断当前文件对象指代的是否是文件夹,是返回True。
  • public String getName():获取文件的名称(包含后缀)
  • public long lastModified():获取文件的大小,返回字节个数
  • public String getPath():获取创建文件对象,使用的路径。
  • public String getAbsolutePath():获取绝对路径。

4.File提供的创建的方法

  • public boolean createNewFile():创建问价
  • public boolean mkdir():创建一级文件夹
  • public boolean mkdirs():创建多级文件夹

5.File类删除文件的功能

  • public boolean delete():删除文件、文件夹,只能删除空文件夹。

6.File提供的遍历文件夹的方法

  • public String[] list():获取当前目录下所有的“一级文件名称”到一个字符串数组中去。
  • public File[] listFiles():获取当前目录下所有的“一级文件对象”到一个文件对象数组中去(重点)

使用listFiles方法时的注意事项:

  • 当主调是文件,或者路径不存在时,返回null
  • 当主调是空文件夹时,返回一个长度为0的数组。
  • 当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回。
  • 当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包括隐藏文件。
  • 当主调是一个文件夹,但是没有权限访问该文件夹时,返回null。

代码演示

package com.item.demo1Flie;
import java.io.File;
import java.io.IOException;
public class Fliedemo1 {public static void main(String[] args) throws IOException {//1.创建File类的对象File f1 = new File("D:\\a.docx");File f2=new File("D:/a.docx");System.out.println(f1.length());//0System.out.println(f2.length());//0System.out.println(f1.exists());//trueSystem.out.println(f1.isFile());//trueSystem.out.println(f1.isDirectory());//falseSystem.out.println(f1.getName());//a.docx//2.只要带盘符的都称之为绝对路径。//3.相对路径:不带盘符的都是相对路径,一般都是找到项目根目录下的文件。System.out.println(f1.getPath());//D:/a.docxSystem.out.println(f1.getAbsolutePath());//D:/a.docxFile f3=new File("day3\\src\\dilei0.txt");System.out.println(f3.length());//10//4.创建对象代表不存在的文件路径File f4=new File("D:/aa.docx");System.out.println(f4.exists());//falseSystem.out.println(f4.createNewFile());//把这个文件创建出来,true//5.创建对象代表不存在的文件夹,mkdir(),mkdirs()File f5=new File("D:/bb");System.out.println(f5.exists());//falseSystem.out.println(f5.mkdir());//只能创建一级文件夹,trueFile f6=new File("D:/cc/aa");System.out.println(f5.mkdirs());//可以创建多级文件夹,true//6.创建File对象代表存在的文件,然后删除,File f7=new File("D:/a.docx");System.out.println(f7.delete());//删除文件,true,只能删除空文件夹。//7.可以获取某个目录下的全部一级名称File f8=new File("D:/");String[] names=f8.list();for (String name : names) {System.out.println(name);}//8.可以获取某个目录下的全部一级文件对象File[] files=f8.listFiles();for (File file : files) {System.out.println(file.getAbsoluteFile());}}
}

二、递归(了解递归算法,以便实现多级遍历找文件)

1.定义

递归是一种算法,在程序语言中广泛应用
从形式上说:方法调用自身的形式称为方法递归。

2.递归的形式

直接递归:方法自己调用自己
间接递归:方法调用其他方法,其他方法有回调方法自己。

3.递归三要素

  • 递归的公式:
  • 递归的终点:
  • 递归的方向要走向终结点。

代码演示

例题:计算n的阶乘
需求:计算n的阶乘,5的阶乘=12345等
分析:1.f(n)=12…*(n-1)*n
2.那么公式等价于f(n)=f(n-1)*n
3.则求1-5的阶乘:
f(5)=f(4)*5
f(4)=f(3)*4
f(3)=f(2)*3
f(2)=f(1)*2
f(1)=1

package com.item.demo1Flie;
public class Filedemo2 {public static void main(String[] args) {printA();}public static void printA(){System.out.println("A");printA();//直接调用,没有停止条件,无限。栈溢出}
}
public class Filedomo3 {public static void main(String[] args) {//目的:计算阶乘System.out.println(f(5));}public static int f(int n){if(n==1){return 1;}return f(n-1)*n;//一遍一遍的去往下调用,到最后一步,然后从最后一步开始返回,最终返回1}
}

4.文件搜索(重要)

package com.item.demo1Flie;import java.io.File;/** 文件搜索:**/
public class Filedemo4 {public static void main(String[] args) {//目标:完成文件搜索,找到D:盘下的QQ.txt文件的位置。File dir=new File("D:/");searchFile(dir,"QQ.txt");}public static void searchFile(File dir,String findName){//1.判断极端情况if(!dir.exists()|| dir==null||dir.isFile()){return;//不搜索}//2.获取当前目录下的所有一级文件或者文件夹File[] files=dir.listFiles();//3.判断当前是否存在一级文件对象,存在才可以遍历if(files!=null && files.length>0){//4.遍历一级文件对象for(File file:files){//5.判断当前一级文件对象是否是文件if(file.isFile()){//6.判断文件名是否相同if(file.getName().contains(findName)){System.out.println("找到文件:"+file.getAbsoluteFile());}}else{//7.判断当前文件是否是文件夹//8.如果是文件夹,则继续递归调用searchFile(file,findName);}}}}
}

package com.item.demo1Flie;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Arrays;

三、字符集

1. 标准ASCII字符串

定义:美国信息交换标准代码,包括了英文、符号等。
标准ASCII使用1个字节存储一个字符,首位是0,因此,总共可表示128个字符。

2.GBK(汉字内码扩展规范,国标)

定义:汉字编码字符集,包含2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储。
注意:GBK兼容了ACII字符集。
GBK规定:汉字的第一个字节的第一位必须是1,汉字占2个字符,英文、数字占1个字节。

3.Unicode字符集(统一码,也叫万国码)

定义:是国际组织制定的,可以容纳世界上所有文字、符号的字符集。
UTF-32:我4个字节表示一个字符。
UTF-8(必须掌握):是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,四个字节。
注意:英文字符、数字等只占1个字节(兼容标准ASCII编码),汉字字符占用3个字节。
UTF-8编码方式(二进制)

  • 1字节:0xxxxxxx
  • 2字节:110xxxxx 10xxxxxx
  • 3字节:1110xxxx 10xxxxxx 10xxxxxx
  • 4字节:11110xxx 10xxxxxx 10xxxxxx

注意1:字符编码时,使用的字符集,和解码时使用的字符集必须一致,否则会出现乱码
注意2:英文,数字一般不会乱码,因为很多字符集都兼容了ASCII编码。

4.对字符的编码

  • byte[] getBytes():指定平台的默认字符集将该String编码为一系列字节,将结果存储到一个新的字节数组中。
  • byte[] getBytes(String charsetName):使用指定的字符集将该String编码为一系列字节,将结果存储到新的字节数组中。

5.对字符的解码

  • String(byte[] bytes):通过使用平台的默认字符集解码指定的字节数组来构造新的String。
  • String(byte[] bytes,String charsetName):通过指定的字符集解码指定的字节数组来构造新的String。

代码演示

public class Filedemo5 {public static void main(String[] args) throws UnsupportedEncodingException {//编码String name="我爱国";byte[] bytes=name.getBytes();//默认平台的UTF-8编码byte[] bytes1=name.getBytes("GBK"); //指定GBK编码,需要抛出异常System.out.println(bytes.length);//9System.out.println(Arrays.toString(bytes));//[-26, -120, -111, -25, -120, -79, -27, -101, -67]System.out.println(bytes1.length);//6System.out.println(Arrays.toString(bytes1));//[-50, -46, -80, -82, -71, -6]//解码String name1=new String(bytes);String name2=new String(bytes1,"GBK");System.out.println(name1);//我爱国System.out.println(name2);//我爱国}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

milvus 总结

1. milvus 的默认 admin 角色账号 root 的密码 为 Milvus 2. 最开始使用命令: docker-compose -f milvus-standalone-docker-compose.yml up -d 启动 milvus 后,使用 attu 登录 Milvus 是不需要输入账号/密码的,可以使用如下方式开启 mi…

基于docker技术的单主机环境模拟测试批量客户端

EX. 任务背景 近期接到一个需求是在一个高性能服务器上,模拟启动多个待测试客户端的场景,但这个客户端程序有点特殊,设置了守护模式,并且需要管理员权限会监控系统的/dev/mem节点,单个环境中只能启动一个。 当前的测…

windows上用vnc viewer 能连接mac,不能连ubuntu

如果 VNC Viewer 可以连接 macOS,但无法连接 Ubuntu,通常是由于 Ubuntu 上的 VNC 服务配置问题或网络限制导致的。以下是逐步排查和解决方案: 1. 确认 Ubuntu 上已安装并运行 VNC 服务 (1) 检查是否安装了 VNC 服务器 Ubuntu 常用的 VNC 服…

Electron-vite【实战】MD 编辑器 -- 编辑区(含工具条、自定义右键快捷菜单、快捷键编辑、拖拽打开文件等)

最终效果 页面 src/renderer/src/App.vue <div class"editorPanel"><div class"btnBox"><divv-for"(config, key) in actionDic":key"key"class"btnItem":title"config.label"click"config.a…

没有宝塔面板的服务器上的WordPress网站打包下载到本地?

在服务器上部署的wordpress博客站&#xff0c;没有宝塔面板&#xff0c;怎么将服务器上的wordpress打包下载到本地&#xff1f; 作者: 晓北斗NorSnow 晓北斗动态视觉设计师&#xff0c;岚度视觉工作室执行人&#xff1b;主要从事展厅视频制作、图形工作站销售、AIGC研究&#…

Atcoder Beginner Contest 410 题解报告

零、前言 经过七七四十九天的分别&#xff0c;本期 ABC 题解又和大家见面啦&#xff01; 经过七周的奋勇杀题&#xff0c;我终于达成了三个小心愿&#xff1a; 不吃罚时AK上金排名 100 100 100 以内 且 Rated&#xff08;悲催的是&#xff0c;我 ABC400 排名两位数但没Rate…

pyspark非安装使用graphframes

pyspark版本3.1.3 需要文件 graphframes-0.8.2-spark3.1-s_2.12.jarspark-graphx_2.12-3.1.3.jar从 https://github.com/microsoft/adb2spark/raw/main/graphframes-0.8.2-py3-none-any.whl 下载graphframes-0.8.2-py3-none-any.whl。下载后把whl后缀改成zip&#xff0c;解压…

[Linux入门] Linux磁盘管理与文件系统

目录 Linux磁盘与文件系统管理详解&#xff1a;从基础到实践 ​​一、磁盘基础简述​​ 1️⃣​​硬盘类型​​&#xff1a; ​2️⃣机械硬盘结构​​&#xff1a; 3️⃣​​磁盘容量计算​​&#xff1a; 公式&#xff1a;磁盘容量磁头数柱面数每磁道扇区数每扇区字节数 …

【Flutter】性能优化总结

【Flutter】性能优化总结 Flutter 性能优化是提升应用流畅度、响应速度和用户体验的关键。可以从以下几个方面进行优化&#xff1a; 一、UI 构建与布局优化 1、避免不必要的重建 使用 const 构造函数&#xff1a;如 const Text(Hello)&#xff0c;可以减少 Widget 重建。使用…

5、ZYNQ PL 点灯--流水灯

目录 1、 概述 2 、硬件电路 3、 新建 VIVADO 工程 4、 添加工程文件 6、编写流水灯功能的Verilog代码 7 、添加管脚约束文件 8、 RTL 仿真 8.1 添加仿真测试源码 8.2 仿真结果 9、 编译并且产生 bit 文件 10、 下载程序 11、实验结果 ​编辑12、总结 1、 概述 本…

HTML5 浮动

1. 常见网页布局 1-3-1布局 1-2-1布局 2. 标准文档流 3. display属性⭐ display&#xff1a; block 给span元素设置成block display&#xff1a; inline 给div元素设置成inline display&#xff1a; inline-block 给div和span元素设置为inline-block display&#xff1a; no…

若依使用RedisCache需要注意的事项

存入redis对象的时候会带一个type字段&#xff0c;此处需要注意 存入方&#xff1a; 此处需要注意&#xff0c;存入redis的时候会带一个type&#xff0c;也就是类的路径名 redisCache.setCacheObject(screenPlayQueueName, userDemondDto,userDemondDto.getPlayDuration().in…

【STM32的通用定时器CR1的CKD[1:0]: 时钟分频因子 (Clock division)】

在 STM32 的通用定时器&#xff08;如 TIM2, TIM3, TIM4, TIM5 等&#xff09;中&#xff0c;CR1 (Control Register 1) 寄存器中的 CKD[1:0] (Clock division) 位域是一个与抗干扰和数字滤波相关的设置&#xff0c;它并不直接影响定时器计数器 (CNT) 的计数频率&#xff08;计…

渲染学进阶内容——机械动力的渲染系统(2)

Flywheel代码 这篇来研究一下实例 InstanceHandle 接口深度解析 接口核心作用 InstanceHandle 是 Flywheel 渲染引擎中的 GPU实例句柄 接口,它提供了对底层渲染实例的直接控制能力。这个接口是**实例化渲染(Instanced Rendering)**系统的核心操作接口,与之前讨论的 Vis…

Redis:极速缓存与数据结构存储揭秘

Redis —— 这个强大又灵活的 开源、内存中的数据结构存储系统。它常被用作数据库、缓存、消息代理和流处理引擎。 核心特点 (为什么它这么受欢迎&#xff1f;)&#xff1a; 内存存储 (In-Memory): 数据主要存储在 RAM 中&#xff0c;读写操作直接在内存中进行。核心优势&…

vulnyx Diff3r3ntS3c writeup

信息收集 arp-scan nmap 这里默认的话是只有80端口的&#xff0c;这个22端口是我拿到root后开的 获取userFlag 直接上web看看 扫个目录 把网页拉到最下面可以看到一个文件上传点 我们尝试上传一个php文件 失败了&#xff0c;那xxx呢 上传成功了&#xff0c;看来后端的后缀名…

【构建】CMake 构建系统重点内容

CMake 构建系统重点内容 1 基本语法与结构 cmake_minimum_required() 指定使用的最低 CMake 版本&#xff0c;防止不同版本行为不一致&#xff1a; cmake_minimum_required(VERSION 3.16)project() 定义项目名称、语言和版本&#xff1a; project(MyApp VERSION 1.0 LANGU…

Packagerun:VSCode 扩展 快捷执行命令

Packagerun&#xff1a;VSCode 快捷命令扩展&#xff08;兼容cursor&#xff09; Packagerun 是一个为 前端和node开发者设计的 VSCode 扩展&#xff0c;旨在简化 package.json 中脚本的执行&#xff0c;并支持自定义命令以提升开发效率。通过右键菜单、快捷键或自定义配置&am…

【C语言】计算机组成、计算机语言介绍

1.1 计算机组成 1946年2月14日&#xff0c;由美国军方定制的世界上第一台电子计算机“电子数字积分计算机”( ENIAC Electronic Numerical And Calculator)在美国宾夕法尼亚大学问世。 计算机(俗称电脑)堪称是人类智慧的结晶&#xff0c;随着计算机的不断发展&#xff0c;各行各…

(九)山东大学软件学院项目实训-基于大模型的模拟面试系统-面试对话标题自动总结

面试对话标题自动总结 主要实现思路&#xff1a;每当AI回复用户之后&#xff0c;调用方法查看当前对话是否大于三条&#xff0c;如果大于则将用户的两条和AI回复的一条对话传给DeepSeek让其进行总结&#xff08;后端&#xff09;&#xff0c;总结后调用updateChatTopic进行更新…