遍历文件夹内的所有文件的小程序

经常看到论坛里有人问到怎么去看文件夹下面有多少个文件和文件夹的问题,我想这个应该不难实现,有两种办法,一种是递归实现,一种是常规的循环实现。请先看递归实现的代码:

  1. importjava.io.*;
  2. importjava.util.*;
  3. publicclassListFileRecursion{
  4. publicstaticvoidlistFile(StringfilePath){
  5. Filefile=newFile(filePath);
  6. if(file.exists()){
  7. if(file.isDirectory()){
  8. System.out.print("Folder:"+file.toString());
  9. File[]fileArray=file.listFiles();
  10. System.out.println("includes"+fileArray.length+"files/foldersdirectly.");
  11. for(FilesubFile:fileArray){
  12. listFile(subFile.toString());
  13. }
  14. }
  15. else{
  16. System.out.println(file.toString());
  17. }
  18. }
  19. else{
  20. System.err.print("Thefile/folderdoesn'texist!");
  21. }
  22. }
  23. publicstaticvoidmain(Stringargs[]){
  24. listFile("C:\\VM_Image");
  25. }
  26. }

打印的结果是:

  1. Folder:C:\VM_Imageincludes3files/foldersdirectly.
  2. C:\VM_Image\Desktop.ini
  3. Folder:C:\VM_Image\UbuntuLinuxincludes11files/foldersdirectly.
  4. C:\VM_Image\UbuntuLinux\Desktop.ini
  5. C:\VM_Image\UbuntuLinux\Ubuntu(2).vmdk
  6. C:\VM_Image\UbuntuLinux\Ubuntu.nvram
  7. C:\VM_Image\UbuntuLinux\Ubuntu.vmdk
  8. C:\VM_Image\UbuntuLinux\Ubuntu.vmsd
  9. C:\VM_Image\UbuntuLinux\Ubuntu.vmx
  10. C:\VM_Image\UbuntuLinux\Ubuntu.vmxf
  11. C:\VM_Image\UbuntuLinux\vmware-0.log
  12. C:\VM_Image\UbuntuLinux\vmware-1.log
  13. C:\VM_Image\UbuntuLinux\vmware-2.log
  14. C:\VM_Image\UbuntuLinux\vmware.log
  15. Folder:C:\VM_Image\WindowsServer2003includes62files/foldersdirectly.
  16. C:\VM_Image\WindowsServer2003\Desktop.ini
  17. C:\VM_Image\WindowsServer2003\enu2k3-000001-s001.vmdk
  18. C:\VM_Image\WindowsServer2003\enu2k3-000001-s002.vmdk
  19. C:\VM_Image\WindowsServer2003\enu2k3-000001-s003.vmdk
  20. C:\VM_Image\WindowsServer2003\enu2k3-000001-s004.vmdk
  21. C:\VM_Image\WindowsServer2003\enu2k3-000001-s005.vmdk
  22. C:\VM_Image\WindowsServer2003\enu2k3-000001-s006.vmdk
  23. C:\VM_Image\WindowsServer2003\enu2k3-000001-s007.vmdk
  24. C:\VM_Image\WindowsServer2003\enu2k3-000001-s008.vmdk
  25. C:\VM_Image\WindowsServer2003\enu2k3-000001-s009.vmdk
  26. C:\VM_Image\WindowsServer2003\enu2k3-000001-s010.vmdk
  27. C:\VM_Image\WindowsServer2003\enu2k3-000001-s011.vmdk
  28. C:\VM_Image\WindowsServer2003\enu2k3-000001-s012.vmdk
  29. C:\VM_Image\WindowsServer2003\enu2k3-000001-s013.vmdk
  30. C:\VM_Image\WindowsServer2003\enu2k3-000001-s014.vmdk
  31. C:\VM_Image\WindowsServer2003\enu2k3-000001-s015.vmdk
  32. C:\VM_Image\WindowsServer2003\enu2k3-000001-s016.vmdk
  33. C:\VM_Image\WindowsServer2003\enu2k3-000001.vmdk
  34. C:\VM_Image\WindowsServer2003\enu2k3-000002-s001.vmdk
  35. C:\VM_Image\WindowsServer2003\enu2k3-000002-s002.vmdk
  36. C:\VM_Image\WindowsServer2003\enu2k3-000002-s003.vmdk
  37. C:\VM_Image\WindowsServer2003\enu2k3-000002-s004.vmdk
  38. C:\VM_Image\WindowsServer2003\enu2k3-000002-s005.vmdk
  39. C:\VM_Image\WindowsServer2003\enu2k3-000002-s006.vmdk
  40. C:\VM_Image\WindowsServer2003\enu2k3-000002-s007.vmdk
  41. C:\VM_Image\WindowsServer2003\enu2k3-000002-s008.vmdk
  42. C:\VM_Image\WindowsServer2003\enu2k3-000002-s009.vmdk
  43. C:\VM_Image\WindowsServer2003\enu2k3-000002-s010.vmdk
  44. C:\VM_Image\WindowsServer2003\enu2k3-000002-s011.vmdk
  45. C:\VM_Image\WindowsServer2003\enu2k3-000002-s012.vmdk
  46. C:\VM_Image\WindowsServer2003\enu2k3-000002-s013.vmdk
  47. C:\VM_Image\WindowsServer2003\enu2k3-000002-s014.vmdk
  48. C:\VM_Image\WindowsServer2003\enu2k3-000002-s015.vmdk
  49. C:\VM_Image\WindowsServer2003\enu2k3-000002-s016.vmdk
  50. C:\VM_Image\WindowsServer2003\enu2k3-000002.vmdk
  51. C:\VM_Image\WindowsServer2003\enu2k3-s001.vmdk
  52. C:\VM_Image\WindowsServer2003\enu2k3-s002.vmdk
  53. C:\VM_Image\WindowsServer2003\enu2k3-s003.vmdk
  54. C:\VM_Image\WindowsServer2003\enu2k3-s004.vmdk
  55. C:\VM_Image\WindowsServer2003\enu2k3-s005.vmdk
  56. C:\VM_Image\WindowsServer2003\enu2k3-s006.vmdk
  57. C:\VM_Image\WindowsServer2003\enu2k3-s007.vmdk
  58. C:\VM_Image\WindowsServer2003\enu2k3-s008.vmdk
  59. C:\VM_Image\WindowsServer2003\enu2k3-s009.vmdk
  60. C:\VM_Image\WindowsServer2003\enu2k3-s010.vmdk
  61. C:\VM_Image\WindowsServer2003\enu2k3-s011.vmdk
  62. C:\VM_Image\WindowsServer2003\enu2k3-s012.vmdk
  63. C:\VM_Image\WindowsServer2003\enu2k3-s013.vmdk
  64. C:\VM_Image\WindowsServer2003\enu2k3-s014.vmdk
  65. C:\VM_Image\WindowsServer2003\enu2k3-s015.vmdk
  66. C:\VM_Image\WindowsServer2003\enu2k3-s016.vmdk
  67. C:\VM_Image\WindowsServer2003\enu2k3.vmdk
  68. C:\VM_Image\WindowsServer2003\vmware-0.log
  69. C:\VM_Image\WindowsServer2003\vmware-1.log
  70. C:\VM_Image\WindowsServer2003\vmware-2.log
  71. C:\VM_Image\WindowsServer2003\vmware.log
  72. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition-Snapshot1.vmsn
  73. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition-Snapshot2.vmsn
  74. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition.nvram
  75. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition.vmsd
  76. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition.vmx
  77. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition.vmxf

当然根据理论,任何一种递归方法都存在着非递归的实现方法,可能要花费多一点的代价:

  1. importjava.io.*;
  2. importjava.util.*;
  3. publicclassListFileCommon{
  4. publicstaticvoidlistFiles(StringfilePath){
  5. LinkedList<File>list=newLinkedList<File>();
  6. Filefile=newFile(filePath);
  7. if(file.exists()){
  8. if(file.isDirectory()){
  9. File[]fileArray=file.listFiles();
  10. System.out.println("Folder:"+file.toString());
  11. for(inti=0;i<fileArray.length;i++){
  12. if(fileArray[i].isDirectory())
  13. list.add(fileArray[i]);
  14. else
  15. System.out.println(fileArray[i].toString());
  16. }
  17. while(!list.isEmpty()){
  18. FilefileInList=list.removeFirst();
  19. if(fileInList.isDirectory()){
  20. //System.out.println(fileInList.toString());
  21. fileArray=fileInList.listFiles();
  22. if(fileArray==null)
  23. return;
  24. for(inti=0;i<fileArray.length;i++){
  25. if(fileArray[i].isDirectory())
  26. list.add(fileArray[i]);
  27. else
  28. System.out.println(fileArray[i].toString());
  29. }
  30. }
  31. }
  32. }
  33. else
  34. System.out.println(file.toString());
  35. }
  36. else
  37. System.err.println("TheFile/Folderdoesn'texist!");
  38. }
  39. publicstaticvoidmain(Stringargs[]){
  40. listFiles("C:\\VM_Image");
  41. }
  42. }

结果为:

  1. Folder:C:\VM_Image
  2. C:\VM_Image\Desktop.ini
  3. C:\VM_Image\UbuntuLinux\Desktop.ini
  4. C:\VM_Image\UbuntuLinux\Ubuntu(2).vmdk
  5. C:\VM_Image\UbuntuLinux\Ubuntu.nvram
  6. C:\VM_Image\UbuntuLinux\Ubuntu.vmdk
  7. C:\VM_Image\UbuntuLinux\Ubuntu.vmsd
  8. C:\VM_Image\UbuntuLinux\Ubuntu.vmx
  9. C:\VM_Image\UbuntuLinux\Ubuntu.vmxf
  10. C:\VM_Image\UbuntuLinux\vmware-0.log
  11. C:\VM_Image\UbuntuLinux\vmware-1.log
  12. C:\VM_Image\UbuntuLinux\vmware-2.log
  13. C:\VM_Image\UbuntuLinux\vmware.log
  14. C:\VM_Image\WindowsServer2003\Desktop.ini
  15. C:\VM_Image\WindowsServer2003\enu2k3-000001-s001.vmdk
  16. C:\VM_Image\WindowsServer2003\enu2k3-000001-s002.vmdk
  17. C:\VM_Image\WindowsServer2003\enu2k3-000001-s003.vmdk
  18. C:\VM_Image\WindowsServer2003\enu2k3-000001-s004.vmdk
  19. C:\VM_Image\WindowsServer2003\enu2k3-000001-s005.vmdk
  20. C:\VM_Image\WindowsServer2003\enu2k3-000001-s006.vmdk
  21. C:\VM_Image\WindowsServer2003\enu2k3-000001-s007.vmdk
  22. C:\VM_Image\WindowsServer2003\enu2k3-000001-s008.vmdk
  23. C:\VM_Image\WindowsServer2003\enu2k3-000001-s009.vmdk
  24. C:\VM_Image\WindowsServer2003\enu2k3-000001-s010.vmdk
  25. C:\VM_Image\WindowsServer2003\enu2k3-000001-s011.vmdk
  26. C:\VM_Image\WindowsServer2003\enu2k3-000001-s012.vmdk
  27. C:\VM_Image\WindowsServer2003\enu2k3-000001-s013.vmdk
  28. C:\VM_Image\WindowsServer2003\enu2k3-000001-s014.vmdk
  29. C:\VM_Image\WindowsServer2003\enu2k3-000001-s015.vmdk
  30. C:\VM_Image\WindowsServer2003\enu2k3-000001-s016.vmdk
  31. C:\VM_Image\WindowsServer2003\enu2k3-000001.vmdk
  32. C:\VM_Image\WindowsServer2003\enu2k3-000002-s001.vmdk
  33. C:\VM_Image\WindowsServer2003\enu2k3-000002-s002.vmdk
  34. C:\VM_Image\WindowsServer2003\enu2k3-000002-s003.vmdk
  35. C:\VM_Image\WindowsServer2003\enu2k3-000002-s004.vmdk
  36. C:\VM_Image\WindowsServer2003\enu2k3-000002-s005.vmdk
  37. C:\VM_Image\WindowsServer2003\enu2k3-000002-s006.vmdk
  38. C:\VM_Image\WindowsServer2003\enu2k3-000002-s007.vmdk
  39. C:\VM_Image\WindowsServer2003\enu2k3-000002-s008.vmdk
  40. C:\VM_Image\WindowsServer2003\enu2k3-000002-s009.vmdk
  41. C:\VM_Image\WindowsServer2003\enu2k3-000002-s010.vmdk
  42. C:\VM_Image\WindowsServer2003\enu2k3-000002-s011.vmdk
  43. C:\VM_Image\WindowsServer2003\enu2k3-000002-s012.vmdk
  44. C:\VM_Image\WindowsServer2003\enu2k3-000002-s013.vmdk
  45. C:\VM_Image\WindowsServer2003\enu2k3-000002-s014.vmdk
  46. C:\VM_Image\WindowsServer2003\enu2k3-000002-s015.vmdk
  47. C:\VM_Image\WindowsServer2003\enu2k3-000002-s016.vmdk
  48. C:\VM_Image\WindowsServer2003\enu2k3-000002.vmdk
  49. C:\VM_Image\WindowsServer2003\enu2k3-s001.vmdk
  50. C:\VM_Image\WindowsServer2003\enu2k3-s002.vmdk
  51. C:\VM_Image\WindowsServer2003\enu2k3-s003.vmdk
  52. C:\VM_Image\WindowsServer2003\enu2k3-s004.vmdk
  53. C:\VM_Image\WindowsServer2003\enu2k3-s005.vmdk
  54. C:\VM_Image\WindowsServer2003\enu2k3-s006.vmdk
  55. C:\VM_Image\WindowsServer2003\enu2k3-s007.vmdk
  56. C:\VM_Image\WindowsServer2003\enu2k3-s008.vmdk
  57. C:\VM_Image\WindowsServer2003\enu2k3-s009.vmdk
  58. C:\VM_Image\WindowsServer2003\enu2k3-s010.vmdk
  59. C:\VM_Image\WindowsServer2003\enu2k3-s011.vmdk
  60. C:\VM_Image\WindowsServer2003\enu2k3-s012.vmdk
  61. C:\VM_Image\WindowsServer2003\enu2k3-s013.vmdk
  62. C:\VM_Image\WindowsServer2003\enu2k3-s014.vmdk
  63. C:\VM_Image\WindowsServer2003\enu2k3-s015.vmdk
  64. C:\VM_Image\WindowsServer2003\enu2k3-s016.vmdk
  65. C:\VM_Image\WindowsServer2003\enu2k3.vmdk
  66. C:\VM_Image\WindowsServer2003\vmware-0.log
  67. C:\VM_Image\WindowsServer2003\vmware-1.log
  68. C:\VM_Image\WindowsServer2003\vmware-2.log
  69. C:\VM_Image\WindowsServer2003\vmware.log
  70. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition-Snapshot1.vmsn
  71. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition-Snapshot2.vmsn
  72. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition.nvram
  73. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition.vmsd
  74. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition.vmx
  75. C:\VM_Image\WindowsServer2003\WindowsServer2003EnterpriseEdition.vmxf
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值