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) { |
| |
| if(dir == null || !dir.exists() || dir.isFile()){ |
| return; |
| } |
| |
| File[] files = dir.listFiles(); |
| |
| if(files != null && files.length > 0){ |
| |
| for(File file : files){ |
| |
| if(file.isFile()){ |
| |
| 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 |
本文作者:subeipo
本文链接:https://www.cnblogs.com/subeipo/p/18681554/java-chu-xue-zhe-bi-ji07file
版权声明:本作品采用署名—非商业性使用—相同方式共享 4.0 协议许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步