Java初学者笔记-07、File

File是java.io.包下的类 ,File类的对象,用于代表当前操作系统的文件(可以是文件、或文件夹)。
File类只能对文件本身进行操作,不能读写文件里面存储的数据;IO流用于读写数据(可以读写文件,或网络中的数据)。

File

File类的对象可以代表文件/文件夹,并可以调用其提供的方法对象文件进行操作。
File封装的对象仅仅是一个路径名,这个路径可以是存在的,也允许是不存在的。

File类对象的创建

构造器 说明
public File(String pathname) 根据文件路径创建文件对象
public File(String parent, String child) 根据父路径和子路径名字创建文件对象
public File(File parent, String child) 根据父路径对应文件对象和子路径名字创建文件对象

绝对路径与相对路径

绝对路径是从盘符开始,相对路径默认到当前工程的目录寻找文件。

File提供的功能

判断文件类型、获取文件信息

方法名称 说明
public boolean exists() 判断当前文件对象,对应的文件路径是否存在,存在返回true
public boolean isFile() 判断当前文件对象指代的是否是文件,是文件返回true,反之。
public boolean isDirectory() 判断当前文件对象指代的是否是文件夹,是文件夹返回true,反之。
public String getName() 获取文件的名称(包含后缀)
public long length() 获取文件的大小,返回字节个数
public long lastModified() 获取文件的最后修改时间。
public String getPath() 获取创建文件对象时,使用的路径
public String getAbsolutePath() 获取绝对路径

创建和删除文件

方法名称 说明
public boolean createNewFile() 创建一个新的空的文件
public boolean mkdir() 只能创建一级文件夹
public boolean mkdirs() 可以创建多级文件夹
方法名称 说明
public boolean delete() 删除文件、空文件夹
// 创建对象代表不存在的文件路径
File f3 = new File("E:\\resource\\dlei01.txt");
System.out.println(f3.exists());// 判断是否存在
system.out.println(f3.createNewFile());// 把这个文件创建出来

delete删完不进回收站,只能删文件和空文件夹

遍历文件夹

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

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

  • 当主调是文件,或者路径不存在时,返回null。
  • 当主调是空文件夹时,返回一个长度为0的数组。
  • 当主调是一个有内容的文件夹时,将里面所有一级文件和文件夹的路径放在File数组中返回。
  • 当主调是一个文件夹,且里面有隐藏文件时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件。
  • 当主调是一个文件夹,但是没有权限访问该文件夹时,返回null。
public static void searchFile(File dir, String fileName) {// 1.判断极端情况if(dir == null || !dir.exists() || 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().equals(fileName)){System.out.println("找到目标文件:" + file.getAbsolutePath());}else {searchFile(file, fileName);}}}}
}

字符集

数据在底层的表示

  • 标准ASCII字符集, 用8位表示,即一个字节存储一个字符,首位都是0。
  • 中国使用GBK国标字符集,2万多个汉字等字符,一个中文字符编码成两个字节的形式存储。
  • GBK兼容了ASCII字符集。汉字的第一个字节的第一位必须是1。
  • UTF-8采取可变长编码方案,共分4个长度区,1字节,2字节,3字节,4字节。 英文、数字只占一个字节,汉字占3个字节。

UTF-8如何区别长度区

UTF-8编码方式(二进制)
0XXXXXXX(ASCII码)
110XXXXX 10XXXXXX
1110XXXX 10XXXXXX 10XXXXXX
11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

对字符进行编解码

编码:字符串编码为字节。
解码:字节解码为字符串。

String提供了如下编码方法 说明
byte[] getBytes() 使用平台的默认字符集将该String编码为一系列字节,将结果存储到新的字节数组中
byte[] getBytes(String charsetName) 使用指定的字符集将该String编码为一系列字节,将结果存储到新的字节数组中
String提供了如下解码方法 说明
String(byte[] bytes) 通过使用平台的默认字符集解码指定的字节数组来构造新的 String
String(byte[] bytes, String charsetName) 通过指定的字符集解码指定的字节数组来构造新的 String

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

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

相关文章

如何通过跨境电商流程管理工具提升项目效率?几个工具推荐

在竞争激烈的跨境电商领域,合适的工具就如同得力的助手,能够显著提升运营效率、优化业务流程,助力企业在全球市场中脱颖而出。从市场调研、选品采购,到店铺运营、营销推广以及物流管理等各个环节,都有相应的专业工具可供选择。接下来,我们将深入探讨一系列跨境电商实用工…

uniapp上传文件

1.h5不支持设置请求头,所有h5通过上述方式上传失败 2.如果前端不传图片需要用两种方式分别调用,且需要设置不同的请求头,后端需要同步更改 来源:https://blog.csdn.net/qq_23859799/article/details/126794172

2025.1.20 CSS基础

1、语法: 选择器{ 属性:值; 属性:值; ... } 例如: <html> <head> <meta charset="utf-8"> <style> p {color:red;text-align:center; } </style> </head><body> <p>Hello World!</p> <p>这个段…

小乌龟 svn 批量解锁方式

再次点击 get lock ,弹出来的框里面勾上“steal the lock” 强制获取锁 ok 之后,再来释放锁: 即可。

git密码带有特殊字符转义

git clone -b dev http://admin:%21%40%23%24%^abc%2C.%2F@xxx.gateway

Vim 操作

目录vi/vim 的使用命令模式输入模式底线命令模式vi/vim 按键说明移动光标的方法搜索替换删除、复制与贴上进入输入或取代的编辑模式快速移动光标在当前行上移动光标跨行移动光标翻页操作指令行的储存、离开等指令vim 环境的变更分屏操作vi/vim 的使用 VIM 常用的有四个模式:正…

NS3环境配置:NetAnim工具:通用安装

在NS3中需要使用进行网络可视化,其中工具NetAnim是官网源代码中所带工具: 编译NetAnim工具:cd netanim-3.109/ make clean qmake NetAnim.pro make 运行Netanim工具:cd netanim-3.109/ ./NetAnim 以上步骤通用于所有Netanim版本的安装

超大体积文本的快速打开查询EmEditor

前言 无法用grep精确查找日志内容的情况下,我会选择将日志文件拉到本地用文本编辑器打开查找关键信息 但有时候需要查看上百MB的日志文件,我们用常规的VsCode或者记事本打开容易出现卡死的问题 (据说win11的记事本倒是解决了这个问题) EmEditor 推荐使用EmEditor这个软件,…

请使用纯js实现一个横向或纵向的无缝滚动效果

以下是一个使用纯JavaScript实现的简单无缝滚动效果的示例。这个例子是横向滚动的,但你可以通过修改CSS和JavaScript中的某些部分来轻松实现纵向滚动。 HTML: <div id="scrollContainer"><div id="scrollContent"><img src="image1.j…

注解开发 -2025/1/19

纯注解开发bean管理 知识点1:@Autowired名称 @Autowired类型 属性注解 或 方法注解(了解) 或 方法形参注解(了解)位置 属性定义上方 或 标准set方法上方 或 类set方法上方 或 方法形参前面作用 为引用类型属性设置值属性 required:true/false,定义该属性是否允…

CTFshow-Web入门模块-爆破-web23

CTFshow-Web入门模块-爆破-web23题目源码 php代码爆破 <?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-09-03 11:43:51 # @Last Modified by: h1xa # @Last Modified time: 2020-09-03 11:56:11 # @email: h1xa@ctfer.com # @link: https://ctfer.com…

prometheus安装及使用

Prometheus 架构图环境准备: 10.0.0.31 prometheus-server31 2 core 2GB+10.0.0.32 prometheus-server32 1 core 1GB+10.0.0.33 prometheus-server331 core 1GB+10.0.0.41 node-exporter41 1 core 1GB+10.0.0.42 node-exporter42 1 core 1GB+10.0.0.43 node-exporter431 core 1…