Java的File
目录:
1.创建File的文件或者目录的方法....
2.创建File对象的构造器的三种形式...
3.关于分割符的相关知识......................
4.file简单Api介绍...................................
5.遍历目录............................................
1.再说File的时候就不得不先说一下创建文件和目录的三个方法。
<1>createNewFile()必须有已经创建好的路径,才能创建一个文件。返回值:如果指定的文件不存在并成功地创建,则返回 true;如果指定的文件已经存在,则返回 false
<2>mkdir() 只能在已经存在的目录中创建创建文件夹。(只能创建一个级别的文件夹)
<3>mkdirs() 可以在不存在的目录中创建文件夹。诸如:a\b,既可以创建多级目录。
2.创建File对象的构造器有三种形式
A.File(String directoryPath)
B.File(String directoryPath, String filename)
C.File(File dirObj, String filename)
在A中的构造函数没什么可说的就是一个路径,(1)如果File的对象调用createNewFile()则会再以最后一个文件名创建一个文件;(2)如果调用mkdir()或者mkdirs()则创建一个目录。
在B中的构造器第一个参数,和第一个的效果一样,但是最后一个参数,(1)当用file对象调用createNewFile()的时候,第二个参数代表的是文件的名字,并且也只能是一个文件名。(2)调用mkdir()的时候第二个参数也只能有路径(3)如果写入第二个参数”javaio\kc”的形式的话调用mkdirs()就会创建两级菜单javaio->kc。
3.关于分隔符的相关知识
路径分隔符:Windows下是“” unix|linux下是“/”
考虑到程序的可移植性,创建文件时建议大家选用"/",因为经过测试用java创建文件时在windows平台下用“/”也是可以的,java貌似在后台作过处理了。
还有一种用法:
用File.separator代替它们,这个永远不会出现可移植性问题。
下面举一些例子,加深理解:
File f = new File("d://book//1"); √
File f = new File("d:/book/1");√
File f = new File("d:\book\1");√
File f = new File("d:ook1"); Χ
注意: 是转义字符,所以\才相当于.
总结:推荐大家用"/"或"File.separator"。
4.file简单Api的介绍
这里写两段代码:
1 //创建一个目录的File对象 2 3 File file1=new File("E:/javatest/java"); 4 5 if(!file1.exists()) { 6 7 file1.mkdirs();//创建目录 8 9 }else { 10 11 System.out.println("创建的目录已经存在"); 12 13 } 14 15 16 17 18 19 //创建一个文件 20 21 File file2=new File("E:/javatest/java","java.txt"); 22 23 if(!file2.exists()) { 24 25 try { 26 27 file2.createNewFile(); 28 29 } catch (IOException e) { 30 31 // TODO Auto-generated catch block 32 33 e.printStackTrace(); 34 35 } 36 37 }else { 38 39 System.out.println("创建的文件已经存在"); 40 41 } 42 43 //是否为路径true,,是否为文件false 44 45 System.out.println("是否为路径"+file1.isDirectory()); 46 47 System.out.println("是否为文件"+file1.isFile()); 48 49 //是否为路径false,,是否为文件true 50 51 System.out.println("是否为路径"+file2.isDirectory()); 52 53 System.out.println("是否为文件"+file2.isFile()); 54 55 //常用的Api 56 57 //A.直接输出对象 58 59 System.out.println(file1);//输出的结果为E:javatestjava,,相当于file1.toString()方法 60 61 System.out.println(file2);//输出的结果为E:javatestjavajava.txt 62 63 //B.输出绝对路径 64 65 System.out.println(file1.getAbsolutePath());//E:javatestjava 66 67 System.out.println(file2.getAbsolutePath());//E:javatestjavajava.txt 68 69 //C.获取文件的名称 70 71 System.out.println(file1.getName());//输出结果为最后一级的目录Java 72 73 System.out.println(file2.getName());//输出的结果为文件的名称Java.txt 74 75 //D.获取父目录 76 77 System.out.println(file1.getParent());//E:javatest 78 79 System.out.println(file2.getParent());//E:javatestjava 80 81 //效果和获取父目录一样的效果 82 83 System.out.println(file1.getParentFile().getAbsolutePath());
5.遍历目录
file.list() 返回的是 字符串数组 直接子的名称,不包含子目录下的内容,用于;列出当前目录下的子目录和文件
如果要遍历子目录下的内容就需要构造成File对象进行递归操作。
file.listFiles() 返回当前目录下的所有子目录和文件的文件数组名称(注意空文件夹是不会被输出的,输出的最后一级必须是文件)
public static void trvaerseFile(File dir) throws IOException{ if(!dir.exists()) {//检查目录是否存在 throw new IllegalArgumentException("目录"+dir+"不存在"); } if(!dir.isDirectory()) {//检查路径是否存在 throw new IllegalArgumentException("你所输入的路径"+dir+"不是目录类型的路径"); } /* String[] fileName=dir.list(); for (String string : fileName) { System.out.println("文件夹的路径"+string); } */ File[] file=dir.listFiles(); if(file!=null && file.length>0) {//确定File确实存在,并且有子目录 for (File file2 : file) { if(file2.isDirectory()) {//如果是目录 //进行递归地操作 trvaerseFile(file2); } else {//如果没有子目录就直接打印出来文件 System.out.println(file2); } } } }