废话不多说, File类主要是掌握它的方法,直接上案例
案例一:常用方法1
/**
* 概述:
* 路径(path): 计算机中的一个位置,可以是文件,也可以是文件夹
* File类就表示计算机中的文件或者文件夹
*
* 测试路径: D:\TestFile\helloWorld.txt
*
*
* @author 王XX
*
*/
public class Demo {
public static void main(String[] args) throws Exception {
一:File的构造方法/
/**
* 对象是一个实实在在的个体,是指这个对象已经在内存中创建了,而不是说真的存在于现实世界中!!
* 在这里你不要理解为,不是说对象是一个实实在在的个体吗?
* 那我File file = new File("D:\\TestFile\\helloWorld.txt"); 不就是创建了一个对象
* 那我file.exists(); 它怎么不存在呢?【前提:在你电脑没有该文件时】 注意不要混淆了概念,
* 那如果按照这样理解,我还 new ATM(); 那我现实中不就有了,哈哈哈
*/
File file = new File("D:\\TestFile\\helloWorld.txt");
System.out.println(file); // D:\TestFile\helloWorld.txt
System.out.println(file.getAbsolutePath()); // D:\TestFile\helloWorld.txt
/**
* File类的构造方法
* 1.File(File parent, String child): parent(目录)和child(文件) , 中间自动会用\来连接
* 2.File(String parent, String child): 中间自动会用/来连接,你D:\\TestFile(第一个参数) 后加不加\,该构造都会加上
* 3.File(String pathname): 上面第一个
* 4.File(java.net.URI uri)
*/
File file2 = new File(new File("D:\\TestFile\\"), "helloWorld.txt");
System.out.println(file2.getAbsolutePath()); // D:\TestFile\helloWorld.txt
File file3 = new File("D:\\TestFile", "helloWorld.txt");
System.out.println(file3.getAbsolutePath()); // D:\TestFile\helloWorld.txt
/**
* 注意点:
* 1.new File("hello.txt") 是相对路径(不带盘符的都是), 这里是相对于项目下
* 2.有时候你会遇到一种奇怪的现象:
* 明明该文件的路径是一模一样的,但就是说不存在,
* 报错误:D:\TestIo\copy\HelloWorld.txt (文件名、目录名或卷标语法不正确。)
* 解决办法: 重新复制一下路径就好了
*
* new File("D:\\TestIo\\copy\\HelloWorld.txt").exists();
*
*
*/
///二:File的常用方法///
System.out.println(file.exists()); //判断该文件是否存在在硬盘上
/**
* 之前还以为如果该文件设置了只读属性才返回true, 补充:只读方法是它setReadOnly()
* 后来通过查看文档才知,只有该文件存在且 可被应用程序读取时才返回true
* 作用类似于exists()方法
*/
System.out.println(file.canRead());
File file4 = new File("D:\\TestFile\\helloWorld1.txt");
/**
* 之前以为createNewFile创建完文件之后,再运行一遍就是覆盖了,还是不能想当然啊 !!!
* 它是检查文件在该目录下是否存在,若不存在则创建该文件!!
*
*/
System.out.println(file4.createNewFile());
//获取文件(包括文件&文件夹)名
System.out.println(file4.getName());//helloWorld1.txt
//判断该文件(包括文件&文件夹)是否是文件
System.out.println(file4.isFile());//true
//判断该文件(包括文件&文件夹)是否是文件夹
System.out.println(file4.isDirectory());//false
//判断文件(包括文件&文件夹)是否有隐藏属性,listFiles()类似方法,也可以捕捉隐藏文件
System.out.println(file4.isHidden());
///三:File的增删改查方法
File file5 = new File("D:\\hello\\world\\java.txt");
/**
* java.io.IOException: 系统找不到指定的路径。
* 说明调用createNewFile()时,该文件的所在目录必须存在!!!
*/
System.out.println(file5.createNewFile());
//创建一级目录
System.out.println(file5.mkdir());
//创建多级目录,就算不存在也可以创建出来
System.out.println(file5.mkdirs());
//删除成功返回true
System.out.println(file5.delete());
/**
* renameTo();
* srcFile: 源文件
* destFile: 目标文件
* 如果srcFile 和 destFile路径一致,就是改名,
* 如果srcFile 和 destFile路径不一致,就是剪切+改名!!!
*/
System.out.println(file5.renameTo(new File("hello.txt")));
//查看文件的最后修改时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String lastMofidy = sdf.format(new Date(file5.lastModified()));
System.out.println(file5.getName()+"最后修改时间: "+lastMofidy);
//修改文件的最后修改时间
file5.setLastModified(new Date().getTime());
//并不一定是指决定路径 !!!
/**
* 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
* 意思是说 File("XXX")的必须包含了父级目录!!!
*
* 例子:File old = new File("TestIO_9");
* File parent = old.getParentFile();//null
*
* 例子:File old = new File("D:\\wzj\\hello.txt");
* File parent = old.getParentFile();
* System.out.println(parent.getName());//wzj
*
* 对应的有:String getParent();
*/
File old = new File("shan\\TestIO_9");
File parent = old.getParentFile();
System.out.println(parent.getName());//shan
/**
* 创建临时文件,是File类静态方法,在学习RandomAccessFile类时用的上
* File.createTempFile("tmp", null);
*
* 与之一般匹配使用的还有:public void deleteOnExit()
* 在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
*
* 在这里我就不过多演示了。。
*/
}
}
案例二:常用方法2
public class Demo2 {
public static void main(String[] args) {
// 场景: D:\\TestFile 只有一个helloWorld.txt
File file4 = new File("D:\\TestFile");
// 将该文件下的文件名[包括文件夹名]作为字符串存入String[]中返回
String[] pathStr = file4.list();
System.out.println(Arrays.toString(pathStr)); // [helloWorld.txt]
// 将该文件下的文件名[包括文件夹名]封装成一个File对象,存入File[]中返回
File[] files = file4.listFiles();
System.out.println(Arrays.toString(files)); // [D:\TestFile\helloWorld.txt]
File[] fileArray = file4.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
System.out.println(dir);// 是目录本身
System.out.println(name);// 是目录下的文件(含文件夹),注意是String类型的
/**
* 这个其实可以转换为下面这种形式,所以一般推荐它,比较灵活 new File(dir,name);
*/
return false;
}
});
file4.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
System.out.println(pathname);// 是目录下的文件(含文件夹),注意是File类型的
return false;
}
});
// 跟上面类似,只不过返回的是String[]!!!
String[] list = file4.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return false;
}
});
}
}
案例三:举例子
/**
* 案例: 输出指定的目录下的指定后缀名的文件
* 例如: 输出D:\TestIo目录下以.java结尾的文件 (注意是文件名,不是目录名)
*
*
* @author 1
*
*/
public class Demo3_Final
{
public static void main(String[] args)
{
/**
* 方式一: 先获取所有的,然后遍历,依次判断,如果满足条件就输出
* 举个栗子: 一个公司招人,先把来应聘的人,叫到大厅,叫他们拿出毕业证
* 一个一个看,如果是本科以上的学历的就满足条件,专科的则不要
*
* 方式二: 先过滤掉不满足条件的,剩下在数组里面的文件都是满足的
* 举个栗子: 还是一个公司招人,首先的要求就是本科学历以上,然后招的人
* 全是本科以上学历
*
* 最终公司的人都是本科以上学历,两种方式都可以采用,看自己用哪种
*/
//方式一
// File file = new File("D:\\TestIo");
// File[] fileArray = file.listFiles();
//
// for (File f : fileArray)
// {
// if(f.isFile() && f.getName().endsWith(".java"))
// {
// System.out.println(f.getName());
// }
// }
//方式二
File file = new File("D:\\TestIo");
File[] fileArray = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir, name).isFile() && name.endsWith(".java");
}
});
for (File f : fileArray) {
System.out.println(f.getName());
}
}
}
如上基本概况的File类常用的方法!!
最后有什么写的不好的,希望各位可以不吝指出
觉得对你有帮助的,想打赏的可以打赏一下,哈哈哈,多少无所谓,这也是对我一种支持与鼓励吗,最后不喜勿喷
有志同道合的小伙伴可以加QQ群讨论:897992110