1. File类
在Java语言的java.io包中,由File类提供了描述文件和目录的操作与管理方法。
作用:File类主要用于命名文件、查询文件属性和处理文件目录。
构造方法摘要 | |
File(File parent, String child) 这个child可以使一个文件名也可以是一个子目录
这个parent是一个File对象 | |
File(String pathname) 这里的路径名可以是一个目录也可以是一个文件 | |
File(String parent, String child) 这个parent为一个目录,parent事先必须存在,否则异常 | |
File(URI uri) 通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的 File 实例 |
一个对应于某磁盘文件或目录的File对象一经创建, 就可以通过调用它的方法来获得文件或目录的属性。
1)public boolean exists( ) 判断文件或目录是否存在(测试磁盘中指定的文件或目录是否存在)
2)public boolean isFile( ) 判断是否文件
3)public boolean isDirectory( )判断是否目录
4)public String getName( )返回文件名或目录名
5)public String getPath( )返回文件或目录的路径(相对路径)。
2)public boolean isFile( ) 判断是否文件
3)public boolean isDirectory( )判断是否目录
4)public String getName( )返回文件名或目录名
5)public String getPath( )返回文件或目录的路径(相对路径)。
6)public StringgetAbsolutePath()返回文件或目录的路径(绝对路径)。
7)public long length( )获取文件的长度
8)public String[ ] list ( )将目录中所有文件名保存在字符串数组中返回。 (返回目录中所有文件名字符串)
7)public long length( )获取文件的长度
8)public String[ ] list ( )将目录中所有文件名保存在字符串数组中返回。 (返回目录中所有文件名字符串)
File类中还定义了一些对文件或目录进行管理、操作的方法,常用的方法有:
1) public boolean renameTo( File newFile ); 重命名文件
2) public void delete( ); 删除文件
3) public boolean mkdir( ); 创建目录(创建文件对象指定的目录(单层目录))
1) public boolean renameTo( File newFile ); 重命名文件
2) public void delete( ); 删除文件
3) public boolean mkdir( ); 创建目录(创建文件对象指定的目录(单层目录))
4)public boolean createNewFile
();创建文件对象指定的文件
其中:File.speparator的作用是判断在不同的系统中斜杠的方向,在windows中斜杠的方向是向右斜的\\
;在Linux中斜杠的方向是向左斜的//,所以可见File.speparator具有跨平台性,是程序更加健壮。建议采用这种方法代替\\或者//
下面举几个例子更好的说明File类:// 获取某一目录下后缀名为".txt"的所有文件名
public static void main(String[] args) {
File dir = new File("D:\\File");
if (!dir.exists()) {
//创建目录
dir.mkdir();
System.out.println("该目录不存在!");
}
// 返回目录中所有文件名字符串
String[] names = dir.list();
for (String name : names) {
if (name.endsWith(".txt"))
System.out.println(name);
}
}
// 递归遍历某一目录下所有文件和目录
public static void main(String[] args) {
File dir = new File("D:\\File");
showDir(dir, 0);
}
public static void showDir(File dir, int level) {
System.out.println(getLevel(level) + dir.getName());
level++;
//列出该目录中的所有文件
File[] files = dir.listFiles();
for (int x = 0; x < files.length; x++) {
//判断files[x]是否为目录
if (files[x].isDirectory()) {
showDir(files[x], level);
} else {
//获取文件名
System.out.println(getLevel(level) + files[x].getName());
}
}
}
public static String getLevel(int level) {
StringBuilder sb = new StringBuilder();
sb.append("|--");
for (int x = 0; x < level; x++) {
sb.insert(0, "| ");
}
return sb.toString();
}
删除一个带内容的目录
分析:删除目录这时应该用delete()方法,而该方法提示此路径名表示一个目录,则该目录必须为空才能删除,所以这种有内容的目录的情况下,就不能直接删除。需要遍历该目录下的所有文件,直到某个文件为止,也就是“从内往外删”。
需要用到的方法:listFiles()得到当前目录下的所有文件,isDirectory()判断是不是目录,不是目录,则删除。代码:
// 删除一个带内容的目录
public static void main(String[] args) {
File dir = new File("D:\\File");
deleteDir(dir);
}
public static void deleteDir(File dir) {
// 列出该目录中的所有文件
File[] files = dir.listFiles();
for (int x = 0; x < files.length; x++) {
// 判断是不是目录
if (files[x].isDirectory()) {
deleteDir(files[x]);
} else {
files[x].delete();
}
}
dir.delete();
}