Java基础—File类
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基础—File类相关的知识,希望对你有一定的参考价值。
第一讲 File类
一 概述
1. File类:文件和目录路径名的抽象表现形式
2. 特点和作用:
1)用来将文件或文件夹封装成对象
2)方便于对文件与文件夹的属性信息进行操作
3)File类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变
4)File对象可以作为参数传递给流的构造函数
二 File对象构建
1. File f =new File(String pathname)
根据一个路径得到File对象
2. File f =new File(String parent, String child)
根据一个目录和一个子文件/目录得到File对象
3. File f =new File(File parent,String child)
根据一个父File对象和一个子文件/目录得到File对象
三 File类常用功能
A. 创建功能
public boolean createNewFile() :创建文件 如果存在这样的文件,就不创建了且返回false
public boolean mkdir(): 创建文件夹 如果存在这样的文件夹,就不创建了且返回false
public boolean mkdirs():创建文件夹,如果父文件夹不存在,会帮你创建出来且返回false
注意:如果你创建文件或者文件夹忘了写盘符路径,那么,默认在项目路径下。
B. 重命名和删除功能
public boolean renameTo(File dest): File1.renameTo(File2)
如果File1和File2路径相同,将File1文件名改为File2的文件名。如果路径不同就是剪切
public boolean delete(): 删除文件或者文件夹,返回是否操作成功
注意:要删除一个文件夹,请注意该文件夹内不能包含文件或者文件夹,否则不能操作成功
且删除功能不走回收站,直接没了
C. 判断功能
* public boolean isDirectory(): 判断是否是目录
* public boolean isFile():判断是否是文件
* public boolean exists():判断是否存在
* public boolean canRead():判断是否可读,windows下认为所有文件都可读
* public boolean canWrite():判断是否可写
windows下可以通过File.setWriteable(false)设置为不可读,那么不可通过IO流写文件
* public boolean isHidden():判断是否隐藏
* boolean isAbsolute() : 判断文件是否是绝对路径
D. 获取功能
* public String getAbsolutePath():获取绝对路径
* public String getPath():获取构造方法中的路径
* public String getName():获取文件名,如果是目录,则返回null
* public long length():获取长度。字节数
* public String getParent(): 获取父目录
* public long lastModified():获取最后一次的修改时间,毫秒值
* public String[] list():获取指定目录下的所有文件或者文件夹的名称数组
* public File[] listFiles():获取指定目录下的所有文件或者文件夹的File数组
四 列出文件与文件过滤
String[] list() 获取所有文件
String[]list(FilenameFilter filter): 返回一个字符串数组,获取目录中满足指定过滤器的文件或目录
File[] listFiles() : 返回一个File对象数组,获取当前文件夹下的所有文件和文件夹
File[] ListFiles(FilenameFilterfilter): 返回File对象数组,获取目录中满足指定过滤器的文件或目录
例子1:判断F盘下是否有txt文件,如果有直接输出
方法1:利用File.listFiles()得到所有文件对象,循环判断
File f = new File("F:/"); File[] subFiles= f.listFiles(); for(File subFile:subFiles){ if(subFile.isFile()&&subFile.getName().endsWith(".txt")){ System.out.println(subFile); } }
方法2:利用File[] ListFiles(FilenameFilterfilter) ,加过滤器判断
File f = new File("F:/"); File[] subFiles= f.listFiles(new FilenameFilter() { @Override public boolean accept(File dir, String name) { File file = new File(dir, name); return file.isFile()&&file.getName().endsWith(".txt"); } }); for(File subFile: subFiles){ System.out.println(subFile); }
但是有一个问题是只能判断该目录下的是否包含txt文件,如果该目录下又包含其他目录
则不能判断其他目录下是否包含txt文件,所以我们需要用循环
例子升级版:判断目录下是否包含txt文件,包含子目录的判断
public static void main(String[] args) { File dir = new File("F:/"); allFileSearch(dir); } public static void allFileSearch(File dir){ File[] subFiles = dir.listFiles(); // 得到所有子文件,包含文件和路径 for(File subFile: subFiles){ //遍历 if(subFile.isDirectory()){// 是目录,递归查找 allFileSearch(subFile); }else{ // 是文件,判断直接输出 if(subFile.getName().endsWith(".txt")){ System.out.println(subFile); } } } }
以上是关于Java基础—File类的主要内容,如果未能解决你的问题,请参考以下文章