1 File类
- File类的对象代表操作系统的文件(文件、文件夹),File类在java.io.File包下
- File类提供了诸如:创建文件对象代表文件,获取文件信息(大小、修改时间)、删除文件、创建文件(文件夹)等功能
1.1 File类创建对象
构造器 | 说明 |
---|
public File(String pathname) | 根据文件路径创建文件对象 |
public File(String parent, String child) | 根据父路径名字符串和子路径名字符串创建文件对象 |
public File(File parent, String child) | 根据父路径对应文件对象和子路径名字符串创建文件对象 |
File对象可以定位文件和文件夹
File封装的对象仅仅是一个路径名,这个路径可以是存在的,也可以是不存在的
1.2 绝对路径相对路径
File file1 = new File(“D:\\JavaCode\\a.txt”)
- 相对路径:不带盘符,默认直接到当前工程下的目录寻找文件
File file1 = new File(“模块名\\a.txt”)
1.3 File类常用方法
方法名称 | 说明 |
---|
public boolean isDirectory() | 判断此路径名表示的File是否为文件夹 |
public boolean isFile() | 判断此路径名表示的File是否为文件 |
public boolean exists() | 判断此路径名表示的File是否存在 |
public long length() | 返回文件的大小(字节数量) |
public String getAbsolutePath() | 返回文件的绝对路径 |
public String getPath() | 返回定义文件时使用的路径 |
public String getName() | 返回文件的名称,带后缀 |
public long lastModified() | 返回文件的最后修改时间(时间毫秒值) |
1.4 File类创建文件
方法名称 | 说明 |
---|
public boolean createNewFile() | 创建一个新的空的文件 |
public boolean mkdir() | 只能创建一级文件夹 |
public boolean mkdirs() | 可以创建多级文件夹 |
public long delete() | 删除由此抽象路径名表示的文件或空文件夹 |
1.5 File类遍历文件夹
方法名称 | 说明 |
---|
public String[] list() | 获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回 |
public File[] listFiles()(常用) | 取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回(重点) |
- 当文件不存在时或者代表文件时,返回null
- 当文件对象代表一个空文件夹时,返回一个长度为0的数组
- 当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
- 当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
- 当没有权限访问该文件夹时,返回null
根据文件名递归查找文件
public static void searchFile(File dir,String fileName){
if(dir != null && dir.isDirectory()){
File[] files = dir.listFiles();
if(files != null && files.length > 0) {
for (File file : files) {
if(file.isFile()){
if(file.getName().contains(fileName)){
System.out.println("找到了:" + file.getAbsolutePath());
try {
Runtime r = Runtime.getRuntime();
r.exec(file.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
}
}else {
searchFile(file, fileName);
}
}
}
}else {
System.out.println("对不起,当前搜索的位置不是文件夹!");
}
}
删除非空文件夹
先使用递归将内部文件全部删除产生空文件夹,再删除空文件夹
public static void deleteDir(File dir){
if(dir != null && dir.exists() && dir.isDirectory()){
File[] files = dir.listFiles();
if(files != null && files.length > 0){
for (File file : files) {
if(file.isFile()){
file.delete();
}else {
deleteDir(file);
}
}
}
dir.delete();
}
2 字符集
2.1 常见字符集
- ASCII字符集:
- ASCII(American Standard Code for Information Interchange,美国信息交换标准代码):包括了数字、英文、符号
- ASCII使用1个字节存储一个字符,一个字节是8位,总共可以表示128个字符信息,对于表示英文、数字来说是够用
- GBK:
- GBK是中国的码表,包含了几万个汉字等字符,同时也要兼容ASCII编码
- GBK编码中一个中文字符一般以两个字节的形式存储
- Unicode字符集:
- 统一码,也叫万国码。是计算机科学领域里的一项业界标准
- UTF-8是Unicode的一种常见编码方式
- UTF-8编码后一个中文一般以三个字节的形式存储,同时也要兼容ASCII编码
- 技术人员都应该使用UTF-8的字符集编码
2.2 编码解码操作
方法名称 | 说明 |
---|
byte[] getBytes() | 使用平台的默认字符集将该 String编码为一系列字节,将结果存储到新的字节数组中 |
byte[] getBytes(String charsetName) | 使用指定的字符集将该 String编码为一系列字节,将结果存储到新的字节数组中 |
String name = "方佬肆fang";
byte[] bytes = name.getBytes("GBK");
System.out.println(bytes.length);
System.out.println(Arrays.toString(bytes));
方法名称 | 说明 |
---|
String(byte[] bytes) | 通过使用平台的默认字符集解码指定的字节数组来构造新的 String |
String(byte[] bytes, String charsetName) | 通过指定的字符集解码指定的字节数组来构造新的 String |
String rs = new String(bytes, "GBK");
System.out.println(rs);