每天保持好心情
File类是java.io包下代表与平台无关的文件和目录,File能创建,删除和重命名文件与目录,虽然它不能访问文件内容,却可以用来进行文件的相关操作。
下面是对文件的一些操作:
package day10.io;
//导入所需要的包
import java.io.File;
import java.io.IOException;
public class TestFile {
public static void main(String[] args) {
// File f2 = new File("d:\\test\\test\\test");
File f1 = new File("d:\\test\\test\\test\\a.txt");
// File f2 = new File("d:","a.txt");//在D盘定义一个a.txt的文件
// 创建文件夹:单层目录。
// f2.mkdir();
// 创建多层文件夹
// f2.mkdirs();
System.out.println(f1.getParentFile().mkdirs());
try {
// 创建文件,需要抛出异常
f1.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
boolean b1 = f1.isFile();//判断f1是否是文件
boolean b2 = f1.isDirectory();//判断f1是否是目录
String name = f1.getName();//获得f1的名字
long l = f1.length();//获得f1的长度
// 最后修改时间
f1.lastModified();
// 删除
f1.delete();
// 判断存在
f1.exists();
// 对于文件夹来说,只有空文件夹才能删除。
// java中的删除,跟回收站没有关系。
}
}
//执行的结果我们可以在自己电脑的D盘看到,创建及删除等,一目了然。
下面做一个小练习,如果文件存在则删除文件,否则就创建文件,然后列出这个这个文件夹和其中的文件,soeasy的问题,看一下怎么做吧!
package day10.io;
import java.io.File;
import java.io.IOException;
public class TestFile2 {
public static void main(String[] args) {
File file = new File("d:\\test");
if(file.exists()){//判断是否存在
file.delete();//是就删除
}else{
try {//否则就创建,同样抛出异常
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
// 列出一个文件夹中的所有文件及文件夹
File[] fileArr = file.listFiles();
for(File f : fileArr){//for循环的输出方式
System.out.println(f.getName());//获得文件名
}
}
}
/*这个问题很简单,结果也很清晰,但是我们看到,获得的文件名只是该目录下的,而里面文件夹下的文件及文件夹怎么得到它们的文件名呢?解决这个问题我们就必须用到递归的方法了,看下代码!*/
package day10.io;
import java.io.File;
public class ListAllFile {
public static void main(String[] args) {
File file = new File("d:\\test");
print(file);
}
//递归的方法
public static void print(File file){
File[] fileArr = file.listFiles();
for(File f : fileArr){
if(f.isDirectory()){//如果f是文件夹就递归,接着判断,这样就可以一直找下去,直到它是一个文件
System.out.println(f.getName());
print(f);// 参数变化。
}else{
System.out.println(f.getName());//如果是文件就输出它的名字
//f.delete();//这个操作完成的是删除文件
}
}
//file.delete();//要想删除文件夹,首先文件夹必须是空的
}
}
下面我们要做的是文件过滤的操作,即把指定类型的文件找出来,这时我们要用到FileFilterd这个接口来完成这个功能,代码如下:
package day10.io;
import java.io.File;
import java.io.FileFilter;
public class TestFileFilter {
public static void main(String[] args) {
File file = new File("d:\\myjava");
// 匿名内部类+回调方式,这种方式很常见,大多数都这么做
File[] fileArr = file.listFiles(new FileFilter(){// 参考Comparable接口。
@Override
public boolean accept(File f) {
if(f.getName().endsWith(".java")){//如果文件名的后缀是.java类型返回true
return true;
}else{
return false;
}
}
});// 回调
for(File f : fileArr){//输出文件名
System.out.println(f.getName());
}
}
//我们可以用新建一个类的方法完成这个功能,也可以像上面那样
/*private static class MyFileFilter implements FileFilter{
@Override
public boolean accept(File f) {
if(f.getName().endsWith(".java")){
return true;
}else{
return false;
}
}
}*/
}
转载于:https://blog.51cto.com/libaiqiang/1258533