java——File类和字符集

目录

  • File类
    • File类的常用操作:
    • 案例:文件搜索的实现
    • 案例:递归文件夹删除
  • 字符集
    • 几种常见的字符集
    • 总结
    • 字符集的编码和解码

File类

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

File类的常用操作:

获取文件信息(大小,文件名,修改时间)
判断文件的类型
创建文件/文件夹
删除文件/文件夹
遍及文件夹

注意:File类只能对文件本身进行操作,不能读写文件里面存储的数据。

20240203-100716-o8.png

File类创建文件夹方法
20240203-101733-7A.png

File类删除文件夹方法
20240203-101817-dm.png

File类提供的遍历文件实的功能
20240203-102245-FS.png

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

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

案例:文件搜索的实现

需求:从D:盘中,搜索“QQ.exe”这个文件,找到后直接输出其位置。
分析:
① 先找出D:盘下的所有一级文件对象
② 遍历全部一级文件对象,判断是否是文件
③ 如果是文件,判断是否是自己想要的
④ 如果是文件夹,需要继续进入到该文件夹,重复上述过程

代码实现如下:

import java.io.File;public class FileSerch {public static void main(String[] args) {searchFile(new File("/Users/mac/tao/study/code_all/"), "security.zip");}/*** 去目录下搜索某个文件** @param dir      目录* @param fileName 搜索的文件名称*/public static void searchFile(File dir, String fileName) {// 1、把非法的情况部兰截住if (dir == null && dir.exists() && dir.isFile()) {return;//代表无法搜索}// 2、 dir不是nul1,存在,一定是目录对象。// 获取当前目录下的全部一级文件对象。File[] files = dir.listFiles();// 3、判断当前目录下是否存在一级文件对象,以及是否可以拿到一级文件对象。if (files != null && files.length > 0) {// 4、遍历全部一级文件对象。for (File f : files) {// 5、判断文件是否是文件,还是文件夹if (f.isFile()) {// 是文件,判断这个文件名是否是我们要找的if (f.getName().contains(fileName)) {System.out.println("找到了:" + f.getAbsolutePath());}} else {//是文件夹,继续重复这个过程(递归)searchFile(f, fileName);}}}}
}

案例:递归文件夹删除

1.判断文件是否合法或为空
2.判断是否为空文件夹或者是否为文件,如果是则删除
3.dir存在且是文件夹,拿到里面的一级文件夹对象
4.如果是有内容的文件夹,先干掉里面的文件,再干掉自己

代码实现如下:

import java.io.File;public class FilesDelete {public static void main(String[] args) {File dir = new File("/Users/mac/tao/工作相关的副本/");deleteDir(dir);}public static void deleteDir(File dir) {if (dir == null || !dir.exists()) {return;}if (dir.isFile()) {dir.delete();return;}// 1. dir存在且是文件夹,拿到里面的一级文件夹对象File[] files = dir.listFiles();if (files == null) {return;}// 2. 这是一个有内容的文件夹,先干掉里面的文件,再干掉自己for (File file : files) {if (file.isFile()) {file.delete();} else {deleteDir(file);}}dir.delete();}
}

字符集

几种常见的字符集

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

GBK(汉字内码扩展规范,国标)
汉字编码字符集,包含了2万多个汉字等字符,GBK中一个中文字符编码成两个字节的形式存储。
注意:GBK兼容了ASCII字符集。
GRk规定:汉字 的第一个字节的第一位必须是1

Unicode字符集(统一码,也叫万国码)
Unicode是国际组织制定的,可以容纳世界上所有文字、符号的字符集。
UTF-32 4个字节表示一个字符 有容乃大
缺点:奢侈!占存豬空间,通信效率变低!

UTF-8
是Unicode字符集的一种编码方案,采取可变长编码方案,共分四个长度区:1个字节,2个字节,3个字节,4个字节
英文字符、数宇等只占1个字节(兼容标准ASCI编码),汉字字符占用3个字节。

编码方式示例:
20240222-033928-J1.png

注意:技术人员在开发时都应该使用UTF-8编码!

总结

ASCll字符集:只有英文、数字、符号等,占1个字节。
GBK字符集:汉字占2个字节,英文、数字占1个字节。
UTF-8字符集:汉字占3个字节,英文、数字占1个字节

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

字符集的编码和解码

编码:把字符按照指定字符集编码成字节。
解码:把字节按照指定字符集解码成字符。

java中提供的字符编码和解码方法
20240222-035145-4s.png

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

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

相关文章

ESP8266智能家居(4)——开发APP基础篇

1.前期准备 安装好Android studio 开发环境 准备一台完好的安卓手机 手机要处于开发者模式 设置 --->关于手机---> 一直点击版本号 (不同手机进入开发者模式的步骤可能不太一样) 进入开发者模式后,找到辅助功能,打开开…

厌倦了混乱的代码?掌握编写干净代码库的艺术

对于入门的开发人员来说,虽然克服了最初的障碍,学会了编程,找到了理想的工作。但其编程旅程并没有就此结束。他们面临真正的挑战:如何编写更好的代码。这不仅仅是为了完善功能,还要编写出经得起时间考验的优雅、可维护…

J7 - 对于ResNeXt-50算法的思考

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 J6周有一段代码如下 思考过程 首先看到这个问题的描述,想到的是可能使用了向量操作的广播机制然后就想想办法验证一下&…

基于springboot+vue的房屋租赁管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

flink内存管理,设置思路,oom问题,一文全

flink内存管理 1 内存分配1.1 JVM 进程总内存(Total Process Memory)1.2 Flink 总内存(Total Flink Memory)1.3 JVM 堆外内存(JVM Off-Heap Memory)1.4 JVM 堆内存(JVM Heap Memory)…

辩证易货模式做成App的可行性分析

随着科技的进步和移动互联网的普及,越来越多的传统业务模式开始寻求数字化转型,以适应市场的发展和满足用户的需求。易货模式,作为一种古老而又现代的交易方式,同样面临着这样的机遇和挑战。那么,将辩证易货模式做成Ap…

【Git】:标签功能

标签功能 一.标签操作二.推送远程标签 标签 tag ,可以简单的理解为是对某次commit的⼀个标识,相当于起了⼀个别名。例如,在项⽬发布某个版本的时候,针对最后⼀次commit起⼀个v1.0这样的标签来标识⾥程碑的意义。这有什么⽤呢&…

胡夏爱意满满,浪漫尽显,心动不止。

♥ 为方便您进行讨论和分享,同时也为能带给您不一样的参与感。请您在阅读本文之前,点击一下“关注”,非常感谢您的支持! 文 |猴哥聊娱乐 编 辑|徐 婷 校 对|侯欢庭 全网热议的胡夏暗恋文学,浪漫指数爆表&#xff01…

PowerDesigner:pdm文件与sql文件互相转,数据库类型切换

PowerDesigner 依据sql文件生成pdm file——reverse engineer—— database 依据pdm文件导出sql 选中——database——generate database 切换库类型

Android platform tool中d8.bat不生效

d8.bat因找不到java_exe文件,触发EOF d8.bat中之前代码为: set java_exe if exist "%~dp0..\tools\lib\find_java.bat" call "%~dp0..\tools\lib\find_java.bat" if exist "%~dp0..\..\tools\lib\find_java.bat" …

高级语言期末2012级A卷

1.编写函数&#xff0c;输出任意正整数n的位数&#xff08;n默认为存储十进制的整形变量&#xff09; 例如&#xff1a;正整数13&#xff0c;则输出2,&#xff1b;正整数3088&#xff0c;则输出4 #include <stdio.h>int func(int n) {int count0;while(n>0) {n/10;co…

基于RK3399 Android11适配OV13850 MIPI摄像头

目录 1、原理图分析2、编写和配置设备树3、调试方法4、遇到的问题与解决5、补丁 1、原理图分析 从上图可看出&#xff0c;我们需要关心的&#xff0c;①MIPI数据和时钟接口使用的是MIPI_TX1/RX1 ②I2C使用的是I2C4总线 ③RST复位引脚使用的是GPIO2_D2 ④PWDN使用的是GPIO1_C7 ⑤…