File类
- 一个File类的对象,表示了磁盘上的文件或目录
- File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作
- File类直接处理文件和文件系统
- File类没有指定信息怎样从文件读取或向文件存储
- File类描述了文件本身的属性
- File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径
- File类还可以浏览子目录层次结构
- java.io包中的File类提供了与具体平台无关的方式来描述目录和文件对象的属性功能。其中包含大量的方法可用来获取路径、目录和文件的相关信息,并对它们进行创建、删除、改名等管理工作。因为不同的系统平台,对文件路径的描述不尽相同。为做到平台无关,在Java语言中,使用抽象路径等概念。Java自动进行不同系统平台的文件路径描述与抽象文件路径之间的转换。
- File类的直接父类是Object类
File类常用方法
– String getName() 返回文件名
– String getPath()
– String getAbsolutePath()
– String getParent() 返回父目录名
– boolean renameTo( File newName)
– long length()
– boolean delete()
– boolean mkdir() 根据抽象路径名创建目录
– String[] list() 返回抽象路径名表示路径中的文件名和目录名
– boolean exists() 在文件存在的情况下返回true,反之返回false
– boolean canWrite()
– boolean canRead()
– boolean isFile()
– boolean isDirectory()
示例程序
FileTest1.java
package com.fairy.io;
import java.io.File;
import java.io.IOException;
public class FileTest1 {
public static void main(String[] args) {
File file1 = new File("C:\\text1.txt");
File file2 = new File("C:/text2.txt");
File file3 = new File("C:" + File.separator + "text3.txt");
try {
System.out.println(file1.createNewFile());
System.out.println(file2.createNewFile());
System.out.println(file3.createNewFile());
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileTest2.java
package com.fairy.io;
import java.io.File;
import java.io.IOException;
public class FileTest2 {
public static void main(String[] args) {
File file = new File("C:/abc/xyz");
File file2 = new File(file, "text.txt");
File file3 = new File("C:/abc/xyz", "text2.txt");
try {
file2.createNewFile();
file3.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileTest3.java
package com.fairy.io;
import java.io.File;
public class FileTest3 {
public static void main(String[] args) {
File file = new File("C:/abc/xyz/hello");
System.out.println(file.mkdir());
System.out.println(file.isDirectory());
System.out.println(file.isFile());
File file1 = new File("C:/abc/abc/abc");
System.out.println(file1.mkdir());
System.out.println(file1.mkdirs());
}
}
FileTest4.java
package com.fairy.io;
import java.io.File;
public class FileTest4 {
public static void main(String[] args) {
File file = new File("D:/Util");
String[] names = file.list();
for (String name : names) {
System.out.println(name);
}
System.out.println();
File[] files = file.listFiles();
for (File f : files) {
System.out.println(f.getName());
}
}
}
FileTest5.java
package com.fairy.io;
import java.io.File;
public class FileTest5 {
public static void main(String[] args) {
File file = new File("C:/abc/xyz");
String[] names = file.list();
for (String name : names) {
if (name.endsWith(".java")) {
System.out.println(name);
}
}
}
}
使用FilenameFilter
– 希望能够限制由list( )方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter)相匹配的文件。为达到这样的目的,必须使用list( )的第二种形式 (方法重载)
– String[ ] list(FilenameFilter FFObj)
– 该形式中,FFObj是一个实现FilenameFilter接口的类的对象
FilenameFilter仅定义了一个方法,accept( )。该方法被列表中的每个文件调用一次。它的通常
形式如下:
boolean accept(File directory, String filename)
当被directory 指定的目录中的文件(也就是说,那些与filename 参数匹配的文件)包含在列表中时,accept( )方法返回true ,当这些文件没有包括在列表中时,accept( )返回false
FileTest6.java
package com.fairy.io;
import java.io.File;
import java.io.FilenameFilter;
public class FileTest6 {
public static void main(String[] args) {
File file = new File("C:/abc/xyz");
String[] names = file.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if (name.endsWith(".java")) {
return true;
}
return false;
}
});
for (String name : names) {
System.out.println(name);
}
}
}