我们知道在Windows系统下,C盘根目录中有一些系统目录,我们是没有查看权限的,所以就很难发现他们的存在。但是总是很好奇,他们究竟是一些什么东东呢,所以我就想用java来让他们现身。
原理:遍历c盘根目录,用筛选器来筛选隐藏文件。
首先我们需要一个过滤器,根据文件是否是隐藏文件来进行过滤,在java IO包下有个接口FileFilter用于抽象路径名的过滤器。此接口的实例可传递给
类的 File
方法。listFiles(FileFilter)
方法摘要 | |
---|---|
boolean | accept(File pathname) 测试指定抽象路径名是否应该包含在某个路径名列表中。 |
方法详细信息 |
---|
accept
boolean accept(File pathname)
测试指定抽象路径名是否应该包含在某个路径名列表中。
参数:
pathname
- 要测试的抽象路径名
返回:
当且仅当应该包含 pathname
时返回 true
好了,查完api发现只要实现这个接口就可以达到过滤器的效果啦,动手搞一下,隐藏文件过滤器FilterByHidden:
package com.xintouyun.Filetest;
import java.io.File;
import java.io.FileFilter;
public class FilterByHidden implements FileFilter{
@Override
public boolean accept(File pathname) {
// TODO Auto-generated method stub
return pathname.isHidden();
}
}
然后让我们遍历一下c盘,并列出c盘下的隐藏文件。
File[] | listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。 |
查完api发现File中有listFiles(FileFilter filter)这个方法,他
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。刚好满足我们的需求。
话不多说,搞一下下。
package com.xintouyun.Filetest;
import java.io.File;
public class Listtest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
listDemo();
}
private static void listDemo() {
// TODO Auto-generated method stub
File dir=new File("c:\\");
File[] files=dir.listFiles(new FilterByHidden());
for(File file: files) {
System.out.println(file);
}
}
}
这就把隐藏文件找出来了,我们来看一下c盘下隐藏的究竟是什么东东:
c:\$RECYCLE.BIN
c:\Boot
c:\bootmgr
c:\F9BF1E41E150
c:\ggldr.mbr
c:\pagefile.sys
c:\ProgramData
c:\SYSTAG.BIN
c:\System Volume Information
c:\YHXEG
就是这些啦。