1 import java.io.File; 2 import java.io.IOException; 3 4 public class FileTest { 5 public static void main(String[] args) { 6 String filename1 = "d:" + File.separator + "aaa.txt"; 7 String filename2 = "d:" + File.separator + "baidu download"; 8 String filename3 = "d:" + File.separator + "baidu download00"; 9 File f1 = new File(filename1); 10 File f2 = new File(filename2); 11 File f3 = new File(filename3); 12 13 /* 14 try { 15 System.out.println(f1.createNewFile()); 16 System.out.println(f1.delete());//文件创建后又被删除 17 //f2.delete(); 18 //f3.delete();以上两行不必要写,System.out.println(f3.delete());已具有删除功能。 19 //System.out.println(f2.delete()); 20 //System.out.println(f3.delete()); 21 } catch (IOException e) { 22 e.printStackTrace(); 23 } 24 */ 25 26 try { 27 System.out.println(f3.mkdir());//File的创建文件夹方法。 28 if(f1.exists()) { 29 System.out.println(f1.delete()); 30 System.out.println(f1.createNewFile()); 31 }else { 32 f1.createNewFile(); //判断file是否存在,如果存在,删除后再创建。不存在,则直接创建文件。 33 } 34 }catch (IOException e) { 35 e.printStackTrace(); 36 } 37 38 String filename4 = "d:" + File.separator; 39 String str1[]; 40 String str2[]; 41 File fi4 = new File(filename4); 42 str1 = fi4.list(); 43 //str2 = fi4.listFiles();//方法的名字是listFiles();不是listFile();listFiles()方法返回的是 44 //File[]数组。 45 File f[] = fi4.listFiles(); 46 47 for (int i = 0;i < str1.length;i++) { 48 System.out.println(str1[i] + " "); 49 } 50 System.out.println("++++++++++++++++++++++++++"); 51 52 for (int i = 0;i < f.length;i++) { 53 System.out.println(f[i] + " "); 54 } 55 56 String filename5 = "d:" + File.separator + "baidu download"; 57 File fi5 = new File(filename5); 58 System.out.println(fi5.isDirectory()); 59 } 60 } 61 /* 62 错误之处: 63 1.要java.io包要引用。File在java.io包里面。用import java.io.File ;import java.io.IOException 64 2.File.separator是一个常量,是File类的静态属性。所以使用的形式是File.separator。 65 3.File创建一个新文件时会产生IOException,而这种Exception是必须要抓取的,必须要写try catch 66 语句。 67 4.异常的方法之一:异常对象.printStackTrace(); 68 5.此方法只能在已有的文件夹下创建文件。 69 6.使用File类的public boolean delete()方法时,File路径可以死文件名和文件夹。当删除一个文件夹 70 时,文件夹必须为空才能执行。 71 7.使用delete()方法,最好使用语句System.out.println(f.delete())来执行,此语句不但可以执行删 72 除操作功能,又能判断是否执行。 73 8.使用File类的createNewFile是返回boolean值,同样可以通过System.out.println(f1.createNewFile()); 74 来判断是否创建了新文件。 75 9.File类的 createNewFile();delete();exists();mkdir();isDirectory();方法的返回值都是boolean类型。 76 10.方法的名字是listFiles();不是listFile(); 77 11.listFiles()方法返回的是File[]数组。listFiles()方法打印的是File类的对象,是完整的路径名。 78 12. 79 */
File类的练习题打印File目录:
1 import java.io.File; 2 import java.io.IOException; 3 4 5 public class ListFilesTest { 6 public static void main(String[] args) { 7 /* 8 String filename1 = "d:" + File.separator + "baidu download00"; 9 File f[]; 10 File fi1 = new File(filename1); 11 f = fi1.listFiles(); 12 13 for (int i = 0;i < f.length;i++) { 14 System.out.println(f[i] + " "); 15 } 16 */ 17 ListFilesTest t1 = new ListFilesTest(); 18 String filename1 = "d:" + File.separator + "0"; 19 File f = new File(filename1); 20 t1.printFiles1(f,0); 21 t1.printFiles(f); 22 //File f1[] = f.listFiles(); 23 //System.out.println(f1.length); 24 25 } 26 27 public void printFiles(File f) { 28 if (f.exists()) { 29 if (f.isDirectory()) { 30 File f1[] = f.listFiles(); 31 //if(f1.length != 0 ) { 32 for(int i = 0;i < f1.length;i++) { 33 printFiles(f1[i]); 34 } 35 //}//else { 36 //System.out.println(f.getName()); 37 //} 38 39 }else { 40 System.out.println(f); 41 } 42 43 } 44 45 } 46 47 public void printFiles1(File f,int j) { 48 String str0 = " "; 49 for (int k = 0;k < j;k++) { 50 str0 = str0 + " "; 51 } 52 53 if (f.exists()) { 54 //System.out.println(f.getName()); 55 if (f.isDirectory()) { 56 File childs[] = f.listFiles(); 57 for (int i = 0;i < childs.length;i++) { 58 System.out.println(str0 + childs[i].getName()); 59 if(childs[i].isDirectory()) { 60 printFiles1(childs[i],++j); 61 } 62 } 63 } 64 } 65 } 66 } 67 /* 68 1.如果要在递归方法中使用计数器,需要在递归方法本生的参数中设置一个变量来计数。 69 2.在写逻辑性结构时,还是要画图,这样会很清晰,不会造成懵逼 70 */