java中使用File类来作为文件和目录路径名的抽象表示,是对于文件或者目录本身的属性来说的,而不是针对于文件的内容。
一些关于File类基本操作的代码如下:
public class FileTest {
/**
* 可用于操作文件或者目录
* @author chaizepeng
*
* @param args
*/
public static void main(String[] args) {
//构造方法,获取一个File的实例,就相当于在指定路径下获取一个文件或文件夹(不管其是否存在)
File file = new File("E://test/a/b/c.txt");
//1、listRoots() 用于查看当前操作系统的文件系统的所有根目录
File[] listRoots = File.listRoots();
for (int i = 0; i < listRoots.length; i++) {
System.out.println(listRoots[i].getPath());;
}
//2、createTempFile(String prefix, String suffix, File directory)
//在指定的目录中创建一个新的空文件,使用给定的前缀(czp)和后缀(test.txt)字符串生成其名称
try {
File.createTempFile("czp", "test.txt",new File("E:"));
} catch (IOException e) {
e.printStackTrace();
}
//3、判断文件或文件夹是否存在
boolean exists = file.exists();
if (exists) {
System.out.println("文件夹存在");
}
//4、创建一个文件
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
//5、创建一个一层目录的文件夹(除根目录外)
file.mkdir();
//6、创建一个多层目录的文件夹
file.mkdirs();
//7、获取文件名
String fileName = file.getName();
//8、获取文件的全路径名
String allFileName = file.getPath();
//9、获取文件所在的父级目录名
String parentFileName = file.getParent();
}
}
接下来通过完成一个需求来演示一下关于File类的一些其他的功能,代码如下:
public class FileListTest {
public static void main(String[] args) {
FileListTest fileListTest = new FileListTest();
//需求1:获取当前系统文件系统中所有的.xml文件
fileListTest.getFileEndWithXml();
//需求2:获取指定目录下所有的.xml文件,这个功能常用于文件上传选择指定类型文件时
fileListTest.getThisPathFile("指定目录");
}
public void getThisPathFile(String path) {
File file = new File(path);
File[] listFiles = file.listFiles(new FileFilter() {//文件过滤器
@Override
public boolean accept(File pathname) {
return pathname.getName().endsWith(".routes");
}
});
for (File file2 : listFiles) {
System.out.println("名字都是以.routes结尾:"+file2.getName());
}
}
/**
* 需求1:获取当前系统文件系统中所有的.xml文件
* @author chaizepeng
*
* @param file
*/
public void getFileEndWithXml() {
//1、先获取文件系统中所有的根目录
File[] listRoots = File.listRoots();
for (File file : listRoots) {
getFileEndWithXml(file);
}
}
/**
* 递归获取每一个文件
* @author chaizepeng
*
* @param file
*/
private void getFileEndWithXml(File file) {
File[] listFiles = file.listFiles();
if (listFiles != null) {
for (File childFile : listFiles) {
if (childFile.isDirectory()) {//判断file是否是一个目录
getFileEndWithXml(childFile);//是目录的话,递归遍历
}
if (childFile.isFile() && childFile.getName().endsWith(".xml")) {//判断file是否是文件,并且以.xml结尾
System.out.println(childFile.getPath());
}
}
}
}
}
以上只是对File类的用法做了简单的介绍。