本帖最后由 曾宇 于 2014-8-7 23:33 编辑
自救。。。。。。。。 不是权限问题。 而是代码不够健全,犯了几个错误。 第一个错误。dir.listFiles();返回了一个null。可能是有一个文件夹,而这个文件夹中没有任何文件和文件夹。 files等于null。for循环时报错。 java给出的错误提示也是第十三行。 汗一个。 第二个错误。BufferedOutputStream在递归体中重复创建。一直是新对象。不可饶恕之错。。。。。。 第三个错误,不应该使用BufferedOutputStream 。 最后,附上修改后的代码。
- import java.io.*;
- //列出制定目录下的隐藏文件和文件夹列表,
- class showDirDemo
- {
- public static void main(String[] args) throws IOException
- {
- File dir = new File("d:\\");
- BufferedWriter bfw = new BufferedWriter(new FileWriter("c:\\隐藏文件列表.txt"));
- showDir(dir,bfw);
- if(bfw!=null){
- try{
- bfw.close();
- }catch(IOException ex){
- ex.printStackTrace();
- }
- }
-
- }
- public static void showDir(File dir,BufferedWriter bfw){
- File[] files = dir.listFiles();//列出指定目录下文件和文件夹,存入到File数组
- if(files!=null){
- for(File file : files){//循环目录
- if(file.isDirectory()){//判断是否是文件夹
- showDir(file,bfw);//如果是文件夹,继续循环判断
- }else{
- if(file.isHidden()){//判断是否是隐藏文件
- try{
- System.out.println(file.isHidden());
- System.out.println(file.toString());
- bfw.write(file.toString());//将隐藏文件地址写入文件中
- bfw.newLine();
- bfw.flush();
- }
- catch(IOException e){
- System.out.println("文件写入失败!");
- }
- }
- }
-
- }
- }
- }
复制代码
|