Java IO(一) File类
在整个java.io
包下,唯一表示与文件本身有关的类就是File类。使用File类可以进行创建或删除文件
等常用操作。要想使用File类。则首先要了解File类的构造方法。
File类常用的构造方法如下:
No. | 方法或常量 | 类型 | 描述 |
---|---|---|---|
1 | public static final String pathSeparator | 常量 | 表示路径的分隔符(windows是“;”) |
2 | public static final String separator | 常量 | 表示路径的分隔符(windows是“\”) |
3 | public File(String pathname) | 构造 | 创建File类对象,传入完整路径 |
4 | public boolean createNewFile() throws IOException | 普通 | 创建新文件 |
5 | public boolean delete() | 普通 | 删除文件 |
6 | public boolean exists() | 普通 | 判断文件是否存在 |
7 | public boolean isDirectory() | 普通 | 判断给定的路径是否在一个目录 |
8 | public long length() | 普通 | 返回文件的大小 |
9 | public String[] list() | 普通 | 列出指定目录的全部内容,只是名称 |
10 | public File[] listFiles() | 普通 | 列出指定目录的全部内容,会有路径 |
11 | Public Boolean mkdir() | 普通 | 创建一个目录 |
12 | Public Boolean renameTo(File dest) | 普通 | 为已有的文件重命名 |
注意:public File(String pathname) 实例化File类的时候,必须设置好路径。
业务代码操作一:创建一个新文件
在E盘下创建一个IOTest.txt
文件
public static void main(String[] args) {
File file = new File("E:" + File.separator + "IOTest.txt");
try {
file.createNewFile();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
注意:因为Windows系统下的分隔符和Linux系统下的分隔符是不同的,所以为了增强适用性,用File.separator
来进行分割。
业务代码操作二:删除一个指定文件
删除刚刚创建的IOTest.txt文件
public static void main(String[] args) {
File file = new File("E:" + File.separator + "IOTest.txt");
if (file.exists()) {//判断文件存不存在,如不存在就不用删除了
file.delete();
}
}
业务代码操作三:综合创建,删除文件的操作
业务场景:给定一个路径,如果此文件存在,则删除;如果不存在,则创建
public static void main(String[] args) {
File file = new File("E:" + File.separator + "IOTest.txt");
if (file.exists()) {//判断文件存不存在,如不存在就不用删除了
file.delete();
System.out.println("文件已经存在,删除");
} else {
try {
file.createNewFile();
System.out.println("文件不存在,创建");
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}
业务代码操作四:创建一个文件夹
使用mkdir()
方法创建一个
文件夹
public static void main(String[] args) {
File file = new File("E:" + File.separator + "io");
file.mkdir();
}
注意:mkdir()
方法只用于创建单独的一个文件夹,但是如果是创建含有多个子文件的文件夹形式,比如:E:\io\a\b\c
,则需要方法mkdirs()
。
public static void main(String[] args) {
File file = new File("E:" + File.separator + "io" + File.separator + "a" + File.separator + "b" + File.separator + "c");
file.mkdirs();//创建类似二叉树形式文件夹
}
业务代码操作五:列出指定目录的全部文件
如果现在给出了一个目录,则可以直接列出目录中的内容。但是列出的方法在File类中存在两个:
- 以字符串数组的形式返回:
public String[] list()
- 以File数组的形式返回:
public File[] listFiles()
在E盘下创建IO文件夹,并在文件夹下创建多个格式文件,如下图:
方法一:使用list()
列出全部内容
public static void main(String[] args) {
File f = new File("E:" + File.separator + "IO" + File.separator);
String[] str = f.list();
for (String s : str) {
System.out.println(s);
}
}
控制台打印结果:
方法二:使用listFiles()
列出
public static void main(String[] args) {
File f = new File("E:" + File.separator + "IO" + File.separator);
File[] files = f.listFiles();
for (File file : files) {
System.out.println(file);
}
}
控制台打印结果:
以上列出了完全路径。
业务代码操作六:判断一个给定的路径是否目录
给定路径,判断是否是目录。
测试一:
File f = new File("E:" + File.separator);
if (f.isDirectory()) {
System.out.println(f.getPath() + "是目录");
} else {
System.out.println(f.getPath() + "不是目录");
}
打印结果:
测试二:
File f = new File("E:" + File.separator + "IO.txt");
if (f.isDirectory()) {
System.out.println(f.getPath() + "是目录");
} else {
System.out.println(f.getPath() + "不是目录");
}
打印结果:
业务代码操作七:列出指定目录的全部内容
如果给定了一个目录,则要求把此目录中的全部文件都列出来,包括子文件夹下的文件。
E盘下面有文件夹IO,IO文件夹下有文件,有子文件夹,如下图:
业务代码:
public static void main(String[] args) {
File f = new File("E:" + File.separator + "IO" + File.separator);
print(f);
}
public static void print(File file) {
if (file != null) {
if (file.isDirectory()) {
File[] files = file.listFiles();
if (files != null) {
for (File f : files) {
print(f);
}
}
} else {
System.out.println(file);
}
}
}
打印结果:
总结:
- File类是在java.io包中唯一与文件本身有关的
- 可以使用File类创建、删除等常见的文件操作
- 在使用File类指定路径的时候一定要注意操作系统间的差异,尽量使用separator进行分割