File用来将文件或者文件夹封装成对象,方便对文件与文件夹属性信息进行操作;
File对象可以作为参数进行传递给流的构造函数;
重要字段:static String separator 余系统有关的默认的名称的分隔符,为了使用方便,它被表示为一个字符串;
调用的话,使用File.separator;
File file = new File("1.txt");
将1.txt封装成文件对象
File file = new File("paraent","child");
将父目录和其下的文件分开操作,可以不修改父目录,只操作文件;
File file = new File(d,"1.txt");
sop(file);
打印的是文件路径;
File 文件类的常用方法:
1,创建
boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不再创建,直接返回false;
和输出流不一样,输出流对象一建立就创建文件,如果文件已经存在则会发生覆盖;
createTempFile(paraent, child)
createTempFile(paraent ,child,directory)
mkdir();创建目录,如果父级目录不存在,子文件夹则不会创建;即只能创建一级目录,隔两层父级目录就不存在了;
mkdirs();当父级目录没有成功创建,则先创建父级目录,然后再创建子文件夹;建议使用这个;
2,删除
boolean delete();删除成功返回 true 删除失败返回false
deleteOnExit();退出时删除//好用,不管有没有出现异常;
3,判断
boolean canExecute() 判断该文件是否可执行;
boolean canRead();
boolean canWrite();
boolean exists(); 判断文件是否存在;
boolean isFile() 判断是否是文件;
boolean isDirectory();判断是否是文件夹;
boolean isAbsolute();是否为绝对路径;//只要有盘符,即使文件不存在也可以加以判断;
boolean isHidden();判断是否为隐藏文件;
4,获取信息
get方法:返回String字符串
getNmae();返回文件或者文件夹的名称;
getPath();返回路径
getParaent()//该方法返回的是绝对路径中的父目录,相对路径会返回空;如果想对路径中,有上一层目录,该目录即为返回结果;
getAbsoulutePath();仅返回绝对路径
getAbsoluteFile();返回并封装成文件对象
length();返回字节数;
lastModified();返回最后一次被修改的是时间
renameTo();同一个文件夹下重命名,,不同文件夹下移动(剪切)
list方法:
String list();打印当前文件下文件或者文件夹的名称(包含隐藏文件),调用前需要先判断是否存在以及是否为文件夹;
File[] listFiles();全路径名;开发中使用这个;
File[] listRoots();列出系统中的有效盘符;
FilenameFilter 接口 文件名过滤器 唯一方法 boolean accept(目录,文件名) ,过滤文件目录中的指定文件名称
用法 list(FilenameFilter filter)在获取list的时候传入匿名内部类;
list(new FilenameFilter(){
public boolean accept(File file, String name){
if(name.endsWith(".bmp"))
retuen true; //true获取 // false不获取
return name.endsWith(".bmp);
}
});
使用递归方法打印指定目录下的所有文件夹和文件
public static void showDir(File dir){
System.out.println(dir);//先打印当前目录的名称;
File[] files = dir.listFiles();//获取文件夹下的子文件夹以及文件的全路径名称
for(File file : files){//超级for循环遍历
if(file.isDirectory()){
showDir(file);//如果访问的还是文件夹则继续遍历;
}else{//文件对象就两种除了文件就是文件夹
System.out.println(file);
}
}
}
使用递归删除指定的文件夹以及文件
特别注:在Java中删除操作不走回收站,一旦删除就无法找回,一定谨慎使用!
public static void removeDir(File dir){
File[] files = dir.listFiles();
for(File file: fies){
if(file.isDirectory()){//如果获取的是文件夹就继续遍历,不是文件夹就是文件,文件的话可以直接删除;
removeDir(file);
}else{
System.out.println(file.toString()+" "+file.delete());//加上打印语句是为了检验删除是否成功!
}
}
System.out.println(dir+" "+dir.delete());//当好所有的文件都被删除以后就可以删除该级的文件夹
}