做网站的工作轻松吗/百度扫一扫入口

做网站的工作轻松吗,百度扫一扫入口,成人高考英语作文范文,做化妆品网站的原因文章目录 File >> 存储数据的方案1. 认识File2. File操作2.1 创建File对象2.2 File操作1)对文件对象的信息的操作2)文件/文件夹的创建/删除3)⭐⭐对文件夹的遍历 3. 方法递归3.1 认识递归3.2 递归算法及其执行流程1) 案例:2…

在这里插入图片描述

文章目录

    • File >> 存储数据的方案
      • 1. 认识File
      • 2. File操作
        • 2.1 创建File对象
        • 2.2 File操作
          • 1)对文件对象的信息的操作
          • 2)文件/文件夹的创建/删除
          • 3)⭐⭐对文件夹的遍历
      • 3. 方法递归
        • 3.1 认识递归
        • 3.2 递归算法及其执行流程
          • 1) 案例:
          • 2) 递归算法的三要素:
          • 3) 🤔练习:猴子吃桃问题
        • 3.3 ⭐递归实现文件搜索
      • 4. 字符集
        • 4.1 常见字符集介绍
        • 4.2 字符集的编码、解码操作
          • 1)编码
          • 2)解码

File >> 存储数据的方案

1. 认识File

开发中需要长久保存的数据,可以保存在磁盘的文件中,即使断电后也不会丢失

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

2. File操作

2.1 创建File对象
  • File file = new File("文件/文件夹/绝对路径/相对路径");
// public File(String pathname):通过将给定的路径名字符串转换为表示绝对路径名字符串来创建一个新File实例。
// public File(String parent, String child):从父路径名字符串和子路径名字符串创建一个新File实例。
// public File(File parent, String child):从父目录和子路径名字符串创建一个新File实例。
// File f11 = new File("F:\\Pictures\\江晏.png"); 反斜杠的路径:双反斜杠
File f1 = new File("F:/Pictures/江无浪.png");
2.2 File操作
1)对文件对象的信息的操作
System.out.println(f1.getName());       // 文件名
System.out.println(f1.getParent()); //  父路径
System.out.println(f1.getPath());   // 路径System.out.println(f1.length());        // 字节个数
System.out.println(f1.lastModified());  // 最后修改时间
System.out.println(f1.isFile());    // 是否是文件
System.out.println(f1.isDirectory()); // 是否是文件夹// 可以使用相对路径定位文件对象
// 只要带有盘符的路径都称之为绝对路径
// 相对路径:不带盘符,默认是到你的idea工程下直接寻找文件的。一般用来找工程下的项目文件的
System.out.println(f1.getAbsolutePath());   // 绝对路径
2)文件/文件夹的创建/删除
// 3、创建对象代表不存在的文件路径\文件夹
File f2 = new File("F:/Users/Juzi/Pictures/江晏1.png");
System.out.println(f2.exists());    // 判断文件是否存在
System.out.println(f2.createNewFile()); // 创建文件// 4、创建对象代表不存在的文件夹
// mkdir():创建单级文件夹
File dir1 = new File("F:/Users/Juzi/Pictures/dir1");
System.out.println(dir1.mkdir());
// mkdirs():创建多级文件夹
File dir2 = new File("F:/Users/Juzi/Pictures/dir1/dir2/dir3");
System.out.println(dir2.mkdirs());// 5、创建File对象代表存在的文件,然后删除它
File f3 = new File("F:/Users/Juzi/Pictures/江晏.png");
System.out.println(f3.delete());// 6、创建File对象代表存在的文件夹,然后删除它
// 只能删除空文件夹
File dir3 = new File("F:/Users/Juzi/Pictures/dir1");
System.out.println(dir3.delete());
3)⭐⭐对文件夹的遍历

在这里插入图片描述

💡可以通过获取的文件对象数组是长度为0还是为null,来判断该文件夹是为空还是没有权限访问,从而采取措施提高代码的健壮性。

// 7、遍历文件夹的方法
// public String[] list():获取当前目录下的所有子项,以字符串数组的形式返回。
// public File[] listFiles():获取当前目录下的所有子项,以File数组的形式返回。
File names = new File("F:/Users/Juzi/Pictures");
String[] namelist = names.list();
for (String name : namelist){System.out.println(name);
}
// 获取的是文件对象,然后可以操作文件
File[] files = names.listFiles();
for (File file : files){System.out.println(file);
}

3. 方法递归

3.1 认识递归
  • 一种算法
  • 从形式上:方法调用自身的形式 >>> 递归
    • 直接递归:方法自己调用自己
    • 间接递归:方法调用其他方法,其他方法又回调方法自己
  • 需注意的问题:
    • 递归如果没有控制好终止,会出现递归死循环,导致栈内存溢出错误
public static void main(String[] args) {// 目标:认识递归的形式print(3);
}public static void print(int n) {if (n > 0) {print(n - 1);   // 递归调用:自己调自己System.out.print(n + "\t");}
}

3.2 递归算法及其执行流程
1) 案例:
  • 需求:计算n的阶乘
  • 分析
    • 公式:f(n) = 1 * 2 * 3 * 4 * ...(n-1) * n;
    • 递归写法:f(n) = f(n-1) * n
public static void main(String[] args) {// 目标:计算n的阶乘System.out.println(factorial(5));	// 120
}public static int factorial(int n) {if (n == 1) {return 1;}return n * factorial(n - 1);
}
  • 递归调用的流程

先一层一层入栈,再一层一层出栈

在这里插入图片描述

2) 递归算法的三要素:
  • 递归公式:f(n) = f(n-1) * n
  • 递归的终结点:f(1)
  • 递归的方向必须走向终结点
3) 🤔练习:猴子吃桃问题

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。

求第一天共摘多少个桃子?

分析:

  • 每天都是同一个事件:当天桃子数量的一半 + 1

  • 递归公式:
    f ( n + 1 ) = f ( n ) − f ( n ) / 2 − 1 → f ( n ) = 2 f ( n + 1 ) + 2 f(n+1) = f(n)-f(n)/2-1 \quad →f(n) = 2f(n+1) + 2 f(n+1)=f(n)f(n)/21f(n)=2f(n+1)+2

  • 递归的终结点:f(10) = 1

  • 递归的方向必须走向终结点

public static void main(String[] args) {// 猴子吃桃System.out.println(peachCount(1));  // 1534// 第一天的桃子数量 peachCount(1)
}public static int peachCount(int day){if(day == 10){return 1;}return (peachCount(day + 1) + 1) * 2;
}

在这里插入图片描述

3.3 ⭐递归实现文件搜索
  • 需求:从E:盘中,搜索 “ QQ.exe ” 文件,找出后输出其位置

  • 分析:

    • 先找出E:盘下的所有一级文件对象
    • 遍历全部一级文件对象,判断是否是文件
      • 是文件 → 判断是否是自己想要的
      • 是文件夹,需要继续进入到该文件夹,重复上述过程
public static void main(String[] args) {// 目标:完成文件搜索// 1、定义一个方法,实现文件搜索功能。// 2、在main方法中调用该方法,并测试。File dirPath = new File("E:/");searchFile(dirPath, "QQ.exe");
}/*** 递归实现文件搜索* @param dirPath 搜索的目录路径* @param fileName 要搜索的文件名*/
public static void searchFile(File dirPath, String fileName){// 1、判断极端情况: 判断当前目录是否存在,并且是文件夹,并且不是文件// ① 当前目录是否有权限访问 || ② 当前目录是否存在 || ③ 当前目录是否是文件if(dirPath == null || !dirPath.exists() || dirPath.isFile()){System.out.println("搜索的文件不存在!");return;}// 2、获取目录下的所有一级文件或者文件夹对象File[] files = dirPath.listFiles();// 2.1 考虑极端情况:判断当前目录下是否存在一级文件对象,存在才可以遍历// files != null  》》》 当前目录有权限拿// files.length > 0   》》》 当前目录有一级文件对象if(files!=null && files.length>0){// 3、遍历一级文件对象,判断是文件还是文件夹for (File file : files){if(file.isFile()){// 4、判断文件名是否匹配if(file.getName().contains(fileName)){System.out.println("找到文件:" + file.getAbsoluteFile());}}else{// 5、递归搜索子文件夹searchFile(file, fileName);}}}
}

📓关于 if 条件语句中的判断 >>> 遍历文件的 listfiles() 方法中各返回值的明细

4. 字符集

4.1 常见字符集介绍
  • 标准ASCII字符集
    • 包含英文、符号等
    • 使用1个字节(8位)存储一个字符,首位是0,总共可表示128个字符
  • GBK(汉字内码扩展规范,国标)
    • 汉字编码字符集,包含2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储
    • GBK兼容了ASCII字符集
    • 汉字的第一个字节的第一位必须是1
  • Unicode字符集(统一码)
    • 国际组织制定的,可以容纳世界上所有文字、符号的字符集
  • UTF-8字符集:
    • Unicode字符集的一种编码方案
    • 采用可变长编码方案:前缀码
      • 共四个长度区:1个字节(英文、数字),2个字节,3个字节(汉字),4个字节

可变长编码

4.2 字符集的编码、解码操作

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

⚠️英文、数字一般不会乱码,因为很多字符集兼容了ASCII码

1)编码

getBytes()方法:将字符串转换为字节数组

getBytes(String charsetName):指定编码方式,将字符串转换为字节数组

String str = "你好";byte[] bytes = str.getBytes();  // 默认使用UTF-8编码
System.out.println(bytes.length);   // 6
System.out.println(Arrays.toString(bytes)); // [-28, -67, -96, -27, -91, -67]byte[] gbks = str.getBytes("GBK");
System.out.println(gbks.length);    // 4
System.out.println(Arrays.toString(gbks));  // [-60, -29, -70, -61]
2)解码

String(byte[] bytes):默认使用UTF-8解码

String(byte[] bytes, String charsetName):指定编码方式,将字节数组解码为字符串

String str2 = new String(bytes);
System.out.println(str2);   // 你好String str3 = new String(gbks, "GBK");
System.out.println(str3);   // 你好

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

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

相关文章

oracle 基础知识之 多表查询

多表查询定义:当查询的数据并不是来源一个表时,需要使用多表连接操作完成查询。多表连接查询通过表之间的关联字段,一次查询出多个表的数据。多表查询包括了等值连接、左连接、右连接、完全连接。 1.等值连接 等值连接也称为简单连接&#xf…

Prims region.Views 为null

原因: 导航未完成或异步问题 解决方式:使用回调确认导航完成后再操作视图 _regionManager.RequestNavigate("MonitorRegion", "MonitorView", nps, navigationResult > {if (navigationResult.Result true){var region _regio…

reconstruct_3d_object_model_for_matching例子

文章目录 1.获取om3文件2.准备可视化3.准备3D可视化4.读取3D模型5.显示成对注册结果16.显示成对注册结果27.联合注册模型8.处理图像8.1子采样8.2 图像计算与平滑8.3 三角测量 9.基于表面做3D匹配10.评估模型准确度10.1 在场景中找到模型10.2 计算模型和场景之间的距离 11.立体系…

软件安全性测试的重要性和常用工具介绍,软件测试服务公司推荐

在当今数字化快速发展的时代,软件已经成为各行各业不可或缺的一部分。然而,随着软件系统的复杂性增加,安全性问题也愈发突出,因此软件产品生产周期中安全测试必不可少。软件安全性测试是指对软件系统进行评估,以发现潜…

使用 ESP8266 和 Android 应用程序实现基于 IOT 的语音控制家庭自动化

使用 ESP8266 实现基于 IOT 的语音控制家庭自动化 欢迎来到另一个令人兴奋的项目,我们将使用 Wi-Fi 模块构建一个语音控制ESP8266家庭自动化系统,您可以在其中通过语音通过 Android 应用程序从世界任何地方控制您的家用电器。是的,您只需使用语音命令即可打开或关闭负载(L…

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解

【HarmonyOS Next】鸿蒙中自定义弹框OpenCustomDialog、CustomDialog与DialogHub的区别详解 一、三者的区别与关系 1. 官方迭代过程为: CustomDialog 》 OpenCustomDialog 》 DialogHub 迭代过程表明,弹框的调用越来越便捷,与UI解耦&…

【C++】stack和queue的使用及模拟实现(含deque的简单介绍)

文章目录 前言一、deque的简单介绍1.引入deque的初衷2.deque的结构3.为什么选择deque作为stack和queue的底层默认容器 二、stack1.stack的介绍2.stack的使用3.stack的模拟实现 三、queue1.queue的介绍2.queue的使用3.queue的模拟实现 前言 一、deque的简单介绍(引入…

开源PACS(dcm4che-arc-light)部署教程,源码方式

目录 文件清单下载地址安装概述OpenLDAP、Apache Directory StudioWildflydcm4che 安装部署MySQL源码编译dcm4cheedcm4chee-arc-light OpenLDAP安装ApacheDirectoryStudio安装配置WildFly服务器 部署完成 文件清单 下载地址 Apache directory studio - linkOpenLDAP - linkdcm…

工作记录 2017-02-04

工作记录 2017-02-04 序号 工作 相关人员 1 修改邮件上的问题。 更新RD服务器。 郝 更新的问题 1、DataExport的设置中去掉了ListPayors,见DataExport\bin\dataexport.xml 2、“IPA/Group Name” 改为 “Insurance Name”。 3、修改了Payment Posted的E…

C语言动态内存管理(下)

欢迎拜访:雾里看山-CSDN博客 本篇主题:C语言动态内存管理(下) 发布时间:2025.3.18 隶属专栏:C语言 目录 动态内存常见错误内存泄漏(Memory Leak)典型场景后果解决方案 悬挂指针(Dangling Pointe…

Vue:Vue2和Vue3创建项目的几种常用方式以及区别

前言 Vue.js 和 Element UI 都是用 JavaScript 编写的。 1、Vue.js 是一个渐进式 JavaScript 框架。2、Element UI 是基于 Vue.js 的组件库。3、JavaScript 是这两个项目的主要编程语言。 而Element Plus是基于TypeScript开发的。 一、Vue2 1、基于vuecli工具创建 vue2 …

机器人曲面跟踪Surface-Tracking

定义 机器人曲面跟踪(Surface-Tracking)是指机器人通过实时感知工件曲面的三维形貌,动态调整运动轨迹和位姿,以精确跟随曲面进行加工(如打磨、抛光、喷涂等)的技术。 力 - 位姿协同控制 力控模式&#xff…

【AVRCP】蓝牙协议栈深度解析:AVCTP互操作性核心机制与实现细节

目录 一、事务标签(Transaction Label)机制 1.1 事务标签核心规则 1.2 事务标签作用域与并发性 1.3 实现建议与陷阱规避 1.4 协议设计思考 1.5 调试与验证 二、消息分片(Fragmentation)机制 2.1 分片触发条件 2.2 分片支…

harmonyOS NEXT开发与前端开发深度对比分析

文章目录 1. 技术体系概览1.1 技术栈对比1.2 生态对比 2. 开发范式比较2.1 鸿蒙开发范式2.2 前端开发范式 3. 框架特性对比3.1 鸿蒙 Next 框架特性3.2 前端框架特性 4. 性能优化对比4.1 鸿蒙性能优化4.2 前端性能优化 5. 开发工具对比5.1 鸿蒙开发工具5.2 前端开发工具 6. 学习…

OpenWebUI:一站式 AI 应用构建平台体验

🚀 大家好,今天给大家分享一个超棒的 AI 应用构建工具——OpenWebUI!体验下来,只能说丝滑!必须强烈推荐! 🔥 听说过阿里巴巴的 Qwen 吗?他们最新的 Qwen Chat 网站就是用 OpenWebUI…

多线程—进程与线程

1 进程 1.1 进程概念 进程:操作系统提供的一种抽象,当程序在运行时,好像计算机的所有硬件资源都在为其服务。换言之,进程就是程序的一次运行过程。进程是操作系统分配资源的基本单位。 注意:区分进程和程序&#xff0…

ssm框架之mybatis框架动态SQL

1 mybatis动态sql mybatis可以通过各种各样的标签在sql映射文件中实现如下功能 1、语句的动态拼接 2、前后缀格式处理 3、复杂参数处理 常用标签如下: 1.1 if标签 如下示例,当有一个入参为null或者空的时候的时候,不参与计算,…

poetry使用

1.初始化 package name 填入口文件名 poetry init2.在本目录下虚拟 poetry config virtualenvs.in-project true 3.自动生成依赖文件和vent虚拟环境,管理本项目下载包 poetry add flask pandas numpy 4 4.下载依赖 poetry install 5.查看都安装了什么包 poe…

Compose 的产生和原理

引言 compose 出现的目的: 重新定义android 上ui 的编写方式。为了提高android 原生ui开发效率。让android 的UI开发方式跟上时代。 正文 compose 是什么? 就是一套ui框架 和flutter 一样是一套ui框架 Flutter:跨平台开发趋势与企业应用的…

【计算机网络】一二章

一 二 非常棒的例子 相同的传播时延,带宽越大,该链路上所能容纳的比特数越多 相同的传播时延,带宽越大,该链路上所能容纳的比特数越多 往返时间(Round-Trip Time,RTT)s是指从发送端发送数据分组…