JAVA SE.docx
《JAVA SE.docx》由会员分享,可在线阅读,更多相关《JAVA SE.docx(30页珍藏版)》请在冰豆网上搜索。
JAVASE
JavaSE02Day01
Top
1.FileUtils——deleteDirectory方法实现
2.FileUtils——listFile(File,String[],boolean)
3.FileUtils——copyFile方法的实现
1FileUtils——deleteDirectory方法实现
1.1问题
删除指定目录及其包含的所有内容。
1.2方案
新建类FileUtils类,在类中添加方法deleteDirectory(Filedir),该方法的参数dir表示要删除的目录:
1.publicstaticvoiddeleteDirectory(Filedir)
2.throwsIOException{}
在deleteDirectory方法中添加判断dir目录是否存在的代码:
1.if(!
dir.exists()){
2. thrownewIllegalArgumentException("目录:
"
3.+dir+"不存在");
4.}
在deleteDirectory方法中添加判断dir是否为目录的代码:
1.if(!
dir.isDirectory()){
2. thrownewIllegalArgumentException(dir+"不是目录");
3.}
使用File类的listFiles(),获取一个目录下的所有文件和目录:
1.File[]subs=dir.listFiles();
递归删除dir及dir的子目录下的所有文件:
1.if(subs!
=null&&subs.length>0){
2. for(Filesub:
subs){
3. if(sub.isDirectory()){
4. deleteDirectory(sub);
5. }else{
6. System.out.println(sub);
7. if(!
sub.delete()){
8. thrownewIOException("无法删除文件:
"+sub);
9. }
10. }
11. }
12. }
删除dir目录:
1.if(!
dir.delete()){
2. thrownewIOException("无法删除目录:
"+dir);
3.}
1.3实现
系统代码实现如下:
1.publicstaticvoiddeleteDirectory(Filedir)
2.throwsIOException{
3. if(!
dir.exists()){
4. thrownewIllegalArgumentException("目录:
"
5.+dir+"不存在");
6. }
7. if(!
dir.isDirectory()){
8. thrownewIllegalArgumentException(dir+"不是目录");
9. }
10. File[]subs=dir.listFiles();
11. if(subs!
=null&&subs.length>0){
12. for(Filesub:
subs){
13. if(sub.isDirectory()){
14. deleteDirectory(sub);
15. }else{
16. System.out.println(sub);
17. if(!
sub.delete()){
18. thrownewIOException("无法删除文件:
"+sub);
19. }
20. }
21. }
22. }
23. System.out.println(dir);
24. if(!
dir.delete()){
25. thrownewIOException("无法删除目录:
"+dir);
26. }
27. }
1.4扩展
列出指定目录下(包括其子目录)的所有文件。
在FileUtils类中添加listDirectory(Filedir)方法:
1.publicstaticvoidlistDirectory(Filedir)
2.throwsIOException{}
使用递归列出指定dir目录及其子目录下的所有文件:
1.File[]subs=dir.listFiles();
2. if(subs!
=null&&subs.length>0){
3. for(Filesub:
subs){
4. if(sub.isDirectory()){
5. listDirectory(sub);
6. }else{
7. System.out.println(sub);
8. }
9. }
10. }
listDirectory方法完整代码如下:
1. publicstaticvoidlistDirectory(Filedir)
2.throwsIOException{
3. if(!
dir.exists()){
4. thrownewIllegalArgumentException("目录:
"
5.+dir+"不存在");
6. }
7. if(!
dir.isDirectory()){
8. thrownewIllegalArgumentException(dir+"不是目录");
9. }
10. File[]subs=dir.listFiles();
11. if(subs!
=null&&subs.length>0){
12. for(Filesub:
subs){
13. if(sub.isDirectory()){
14. listDirectory(sub);
15. }else{
16. System.out.println(sub);
17. }
18. }
19. }
20. }
FileUtils类的代码如下:
1.publicclassFileUtils{
2. /**
3. *列出指定目录下(包括其子目录)的所有文件
4. *@paramdir
5. *@throwsIOException
6. */
7. publicstaticvoidlistDirectory(Filedir)
8.throwsIOException{
9. if(!
dir.exists()){
10. thrownewIllegalArgumentException("目录:
"+
11.dir+"不存在");
12. }
13. if(!
dir.isDirectory()){
14. thrownewIllegalArgumentException(dir+"不是目录");
15. }
16. File[]subs=dir.listFiles();
17. if(subs!
=null&&subs.length>0){
18. for(Filesub:
subs){
19. if(sub.isDirectory()){
20. listDirectory(sub);
21. }else{
22. System.out.println(sub);
23. }
24. }
25. }
26.
27. }
28. /**
29. *删除指定目录及其包含的所有内容
30. *@paramdir
31. *@throwsIOException
32. */
33. publicstaticvoiddeleteDirectory(Filedir)
34.throwsIOException{
35. if(!
dir.exists()){
36. thrownewIllegalArgumentException("目录:
"+
37.dir+"不存在");
38. }
39. if(!
dir.isDirectory()){
40. thrownewIllegalArgumentException(dir+"不是目录");
41. }
42. File[]subs=dir.listFiles();
43. if(subs!
=null&&subs.length>0){
44. for(Filesub:
subs){
45. if(sub.isDirectory()){
46. deleteDirectory(sub);
47. }else{
48. System.out.println(sub);
49. if(!
sub.delete()){
50. thrownewIOException("无法删除文件:
"+sub);
51. }
52. }
53. }
54. }
55. System.out.println(dir);
56. if(!
dir.delete()){
57. thrownewIOException("无法删除目录:
"+dir);
58. }
59. }
60.}
2FileUtils——listFile(File,String[],boolean)
2.1问题
列出指定目录下指定扩展名的所有文件。
用户可以指定多个扩展名;用户也可以选择是否列出子目录下的文件。
2.2方案
在FileUtils类中添加方法listFile(Filedir,FileFilterff,booleanrecursive)方法,把dir目录中经过ff过滤的文件添加到List的对象中存储,使用recursive判断是否过滤子目录中的文件添加到List的对象中。
1. privatestaticListlistFile(Filedir,FileFilterff,
2. booleanrecursive){
3. Listlist=newArrayList();
4. File[]subs=dir.listFiles(ff);
5. if(subs!
=null&&subs.length>0){
6. for(Filesub:
subs){
7. if(sub.isFile()){//如果是文件
8. list.add(sub);//添加文件到list中
9. }elseif(recursive){//是否获取子目录中的文件
10.//添加子目录中的经过过滤的所有文件添加到list
11. list.addAll(listFile(sub,ff,true));
12. }
13. }
14. }
15. returnlist;
16. }
在FileUtils类中添加方法listFile(File,String[],boolean),dir表示指定的目录,extendsions表示多个扩展名,recursive表示是否列出子目录中的文件:
1.publicstaticListlistFile(Filedir,
2.finalString[]extensions,booleanrecursive){
3.}
判断扩展名信息,如果无扩展名信息,FileFilter的accept方法返回true,相当于不进行过滤:
1.if(extensions==null||extensions.length==0){
2. ff=newFileFilter(){
3. @Override
4. publicbooleanaccept(Filepathname){
5. returntrue;
6. }
7. };
8.}
扩展名有信息的情况,使用FileFilter类的accept方法进行文件过滤:
1.ff=newFileFilter(){
2. @Override
3. publicbooleanaccept(Filepathname){
4. if(pathname.isDirectory())
5. returntrue;
6. Stringname=pathname.getName();
7. for(Stringext:
extensions){
8. if(name.endsWith(ext)){
9. returntrue;
10. }
11. }
12. returnfalse;
13. }
14. };
15. }
2.3实现
系统代码实现如下所示:
1.privatestaticListlistFile(Filedir,FileFilterff,
2. booleanrecursive){
3. Listlist=newArrayList();
4. File[]subs=dir.listFiles(ff);
5. if(subs!
=null&&subs.length>0){
6. for(Filesub:
subs){
7. if(sub.isFile()){//如果是文件
8. list.add(sub);//添加文件到list中
9. }elseif(recursive){//是否去除子目录中的文件
10.//添加子目录中的经过过滤的所有文件添加到list
11. list.addAll(listFile(sub,ff,true));
12. }
13. }
14. }
15. returnlist;
16. }
17.publicstaticListlistFile(Filedir,finalStringfilename,
18. booleanrecursive){
19. if(!
dir.exists()){
20. thrownewIllegalArgumentException("目录:
"+dir+
21."不存在");
22. }
23.
24. if(!
dir.isDirectory()){
25. thrownewIllegalArgumentException(dir+"不是目录");
26. }
27. FileFilterff=null;
28. if(filename==null||filename.length()==0){
29. ff=newFileFilter(){
30. @Override
31. publicbooleanaccept(Filepathname){
32. returntrue;
33. }
34. };
35. }else{
36. ff=newFileFilter(){
37. @Override
38. publicbooleanaccept(Filepathname){
39. if(pathname.isDirectory())
40. returntrue;
41. Stringname=pathname.getName();
42. if(name.indexOf(filename)!
=-1)
43. returntrue;
44. else
45. returnfalse;
46. }
47. };
48. }
49. returnlistFile(dir,ff,recursive);
50. }
2.4扩展
列出指定目录下指定扩展名的所有文件。
用户只能指定一个扩展名;用户也可以选择是否列出子目录下的文件,过滤出来的所有文件用Java中的容器进行存储。
在FileUtils类中添加重载的listFile(Filedir,finalStringfilename,booleanrecursive)方法:
1. publicstaticListlistFile(Filedir,
2.finalStringfilename,booleanrecursive){
3. if(!
dir.exists()){
4. thrownewIllegalArgumentException("目录:
"+dir
5.+"不存在");
6. }
7. if(!
dir.isDirectory()){
8. thrownewIllegalArgumentException(dir+"不是目录");
9. }
10. FileFilterff=null;
11. if(filename==null||