Liny_@NotePad

沉迷ACG中

Java 一些目录操作(查看/创建/删除)

YOYO posted @ 2009年10月27日 02:28 in 【Java SE】 with tags 文件操作 , 2929 阅读

 还是来自SOSO问问的问题:

编写一个Java应用程序,文件名为Folder.java,编译后执行结果如下图所示,实现指定文件夹下目录和文件的文本形式的树状结构显示。要求:
1. 输入: java Folder,显示当前文件夹下的目录和文件的文本形式树状显示;
2. 输入: java Folder C:\test>,显示C:\test文件夹下的目录和文件的文本形式树状显示;(C:\test可以为任意文件夹路径名)
3. 输入: java Folder add aa,在当前文件夹下面添加一个子目录(子目录名为:aa),同时显示当前文件夹下的最新目录和文件的文本形式树状显示;
4. 输入: java Folder del aa,在当前文件夹下面删除一个子目录(子目录名为:aa),同时显示当前文件夹下的最新目录和文件的文本形式树状显示

我发现我好像从来没有做过File操作。。。于是来试试看:

  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. public class Folder
  5. {
  6.         public static void printFolder(String dir, List<Boolean> flag) {
  7.                 File directory = new File(dir);
  8.                 File[] files = directory.listFiles();
  9.                 StringBuffer buf = new StringBuffer("");
  10.  
  11.                 //      显示根目录名
  12.                 if(flag.size() == 1) System.out.println(directory.getName());
  13.  
  14.                 //      根据标识判断前面树形符号
  15.                 for(int i = 0; i < flag.size(); ++i) {
  16.                         buf.append((flag.get(i) ? "  " : "│"));
  17.                 }
  18.  
  19.                 //      输出下属文件
  20.                 for (int i = 0; i < files.length; i++) {
  21.                         //      输出文件/目录名
  22.                         if (i == files.length - 1) {
  23.                                 System.out.print(buf + "└");
  24.                         } else {
  25.                                 System.out.print(buf + "├");
  26.                         }
  27.                         System.out.println(files[i].getName());
  28.  
  29.                         //      如果是目录
  30.                         if(files[i].isDirectory()) {
  31.                                 //      判断下级符号前缀(如果是最后的目录,前面不能带"“"}
  32.                                 if (i == files.length - 1) {
  33.                                         flag.add(true);
  34.                                 } else {
  35.                                         flag.add(false);
  36.                                 }
  37.                                 //      递归打印目录
  38.                                 printFolder(files[i].getAbsolutePath(), flag);
  39.                         }
  40.                 }
  41.  
  42.                 //      去掉当前目录的标识
  43.                 flag.remove(flag.size() - 1);
  44.         }
  45.  
  46.         public static void main(String[] args)
  47.         {
  48.                 //      用于保存目录前缀标识
  49.                 List<Boolean> flag = new ArrayList<Boolean>();
  50.                 flag.add(true);
  51.  
  52.                 switch (args.length)
  53.                 {
  54.                 case 1:
  55.                         //      参数目录
  56.                         Folder.printFolder(args[0], flag);
  57.                         break;
  58.  
  59.                 case 2:
  60.                         //      在当前目录下增加或删除
  61.                         if ("add".equals(args[0]))
  62.                         {
  63.                                 //      添加子目录
  64.                                 new File(args[1]).mkdirs();
  65.                         }
  66.                         if ("del".equals(args[0]))
  67.                         {
  68.                                 //      删除子目录
  69.                                 new File(args[1]).delete();
  70.                         }
  71.  
  72.                 default:
  73.                         //      显示当前目录(参数为0和为1时均执行)
  74.                         Folder.printFolder(System.getProperty("user.dir"), flag);       //     包目录,类目录要用getClass().getResource()
  75.                         break;
  76.                 }
  77.         }
  78. }

截图:

  • java Folder:查看当前目录内容

     
  • java Folder c:\test:查看指定目录的文件夹内容

     
  • java Folder add test:在当前目录下创建test文件夹,并显示当前目录内容

     
  • java Folder del test:删除当前目录下的test文件夹,并显示当前目录内容

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter