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

黑马教程强化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);//我爱国}
}

相关文章:

  • 如何写出优秀的单元测试?
  • YOLOv3 的网络结构详解
  • 【Docker基础】Docker核心概念:资源隔离详解
  • [学习] 多项滤波器在信号插值和抽取中的应用:原理、实现与仿真(完整仿真代码)
  • [直播推流] 本地创建 nginx服务器
  • Spring AI Chat Tool Calling 指南
  • 微博项目(总体搭建)
  • 区间合并:区间合并问题
  • Deep Research Agent的深度与广度如何保证
  • 文件同步·使用同步软件来管理文件(外接大脑)
  • Seata的Undo Log存储机制是什么?
  • 网络代理设置
  • 模型 追蛇效应
  • 【Vue】v-model进阶+ref+nextTick
  • 基于springboot+servlet、jsp的潮服购物商城系统的设计与实现,论文7000字
  • 【Dv3Admin】系统视图API白名单配置文件解析
  • Python 继承的优缺点(处理多重继承)
  • 达梦的三权分立安全机制
  • 微信小程序实现文字逐行动画效果渲染显示
  • 快速入门:创建 Azure 数据资源管理器群集和数据库
  • 网站优化具体做哪些事情/九江seo优化
  • 广州科 外贸网站建设/免费网站seo
  • 网站建设中标签导航的特征/全网营销推广服务
  • 做网站背景/微信指数怎么看
  • 广告设计公司企业文化/新网站 seo
  • 税务局网站模板/新手学百度竞价要多久