Java拾贝第十一天——IO之File类
Java拾贝不建议作为0基础学习,都是本人想到什么写什么
Java中提供了IO包以操控计算机中的文件
File类
在整个IO包中,与文件相关的类就是File类。使用它可以进行创建或删除文件
因为File类是个普通类,初始化它需要调用其有参构造
public File(String pathname){//传参为文件路径
}
使用构造方法初始化File类后,还需要使用其定义的若干方法。File类常用方法如下:
方法或属性 | 方法类型 | 描述 |
---|---|---|
public static final String separator | 常量 | 路径的分隔符 |
public boolean createNewFile() throws IOException | 普通方法 | 创建新文件 |
public boolean delete() | 普通方法 | 删除文件 |
public boolean exists() | 普通方法 | 返回文件是否存在 |
public boolean isDirectory() | 普通方法 | 返回File是否是目录 |
public boolean isFile() | 普通方法 | 返回File是否是一个文件 |
public long length() | 普通方法 | 返回文件大小(单位字节) |
public boolean mkdir() | 普通方法 | 创建目录 |
public String[] list() | 普通方法 | 返回指定路径的所有文件名 |
public String[] listFiles() | 普通方法 | 返回指定路径的所有文件名(附带路径) |
createNewFile()
File类初始化后可以调用其创建一个新文件。该方法会抛出异常
栗子:
public static void main(String[] args) {
File file = new File("D:\\IOtest\\text.txt");
//D盘 IOtest文件夹(也称目录) text.txt文件
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
使用转义符\\以实现一个\的意思
不同的操作系统其路径的目录分隔符也会不同
Windows使用反斜杠 \ 表示目录的分隔符
Linux使用正斜杠 / 表示目录的分隔符
因为Java可以运行在多平台上,所以分隔符并不固定,建议使用Java提供的常量。
public static final String separator
访问方式为:File.separator
至此,修改栗子如下:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
//每一个常量都代表一个分隔符
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
开发时,可能使用的是Windows系统,而部署项目可能在其他的系统,所以建议分隔符一定使用File.separator
delete()
删除指定路径的文件
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
file.delete();
}
exists()
建议对文件进行操作时优先判断文件是否存在。
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
if (file.exists()) {
file.delete();//文件存在则删除
}
}
mkdir()
创建文件夹
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest2";
file.mkdir();
}
若文件夹不存在无法直接创建新文件。
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest3" + File.separator + "text.txt");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
程序运行结果:
java.io.IOException: 系统找不到指定的路径。
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(File.java:1023)
at moudle2.Test11.main(Test11.java:10)
isDirectory()
判断File是否是一个目录(也称文件夹)
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest2";
file.mkdir();
file.isDirectory();//T
}
isFile()
判断File是否是一个文件
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
file.isFile();//T
}
length()
返回文件大小,以字节为单位。
单位换算:
8b=1B 8位=1字节 小b是比特(bit) 大B是字节(Byte)
1024B=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator + "IOtest" + File.separator + "text.txt");
System.out.println(file.length());
}
程序运行结果:
10
//我打开文件随便敲了一些字母上去👉asdsadassd
list()
返回指定路径的所有文件名
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator);
String[] list = file.list();
for (String s : list) {
System.out.println(s);
}
}
程序运行结果:
aDrive
AE
Battle.net
Bgame
Code
DirectX_Repair(Enhanced_Edition)
...
listFiles()
以路径的形式返回指定路径所有文件名。
栗子:
public static void main(String[] args) {
File file = new File("D:" + File.separator);
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f);
}
}
程序运行结果:
D:\aDrive
D:\AE
D:\Battle.net
D:\Bgame
D:\Code
D:\DirectX_Repair(Enhanced_Edition)
...