File类
File表示文件对象,文件对象包含文件目录和普通文件对象,例如一个test文件夹或者目录a/b/c下的d文件夹和test.txt或者text.doc 等都可以用文件对象来表示。new File()只是指定了文件对象路径(关联了文件对象)。若文件对象存在,则可访问该文件对象的相关属性,不存在则无法访问。使用File file= newFIle()只是指定了文件创建的路径,但是文件还没有生成,另外如果路径不存在,那么文件将不会创建成功。
1、关于系统路径分割符。
在Windows中,使用反斜杠“\”作为路径分割符,比如“c:\test”,但是java中反斜杠表示转义,所以需要用“C:\\test”在程序中来表示路径。还可以使用“C:/test”进行路径的表示,这种表示方法在linux中也适用。
File dir0= new File("E:/Test/test");
File dir1 = new File("E:\\test\\test");
File file = new File(“c”+File.Separater+”test.txt”);
还可以使用File类中定义的常量Separater来代替路径分割符,这样在各个系统中都可以使用。如File file = new File(“c”+File.Separater+”test.txt”);单独的Separater表示根的意思。如果在跟下创建文件,相当于在程序路径的根路径下创建文件。
2、创建文件夹或目录
File 类中常用到创建目录的方法有2个,mkdir( ) 和mkdirs( ),两个方法的区别在mkdir( )只能在已经存在的目录下创建文件夹,而mkdirs( )则可已动态的创建路径中的没有存在的目录,例如:
1 File file0 = new File("E:/Test/test/test.doc"); 2 if(!dir0.exists()){ 3 dir0.mkdirs(); 4 System.out.println("E:/Test文件夹已创建"); 5 } 6 7 mkdir( )创建目录 8 9 File file0 = new File("E:/Test/test/test.doc"); 10 if(!dir0.exists()){ 11 dir0.mkdir(); 12 13 if(!dir0.mkdir()){ 14 System.out.println("E:/Test文件夹创建失败"); 15 } 16 17 }
3、创建普通文件
File类中创建文件的常用方法有createNewFile()和createTempFile(), createNewFile() 方法,根据路径创建一个新的空文件,若路径不存在,则抛出异常。
若抽象路径的文件存在时,创建失败。一般新创建的文件为空文件,若已存在所要创建的文件,创建失败即没用生成新的空文件,原来的文件不变。
1 File file0 = new File("E:/Test/test/test.doc"); 2 System.out.println(file0); 3 if(!dir0.exists()){ 4 dir0.mkdirs(); 5 System.out.println("E:/Test文件夹已创建"); 6 } 7 if(!file0.exists()) 8 { System.out.println("E:/Test"); 9 file0.createNewFile(); 10 }
createTempFile() 方法有两种调用方式:
createTempFile(String prefix, String suffix);在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。
createTempFile(String prefix, String suffix, File directory);在指定目录中创建一个新的空文件,使用给定的前缀和后缀中间包含随机数生成其名称。
1 File file1 = new File("E:/Test/test/"); 2 file1.createTempFile("abc", ".txt"); 3 //file1.createTempFile("aaaaaaaa", "txt"); 4 file1.createTempFile("def", ".txt", file1);
E盘下的Test/test文件夹下会生成def6233708088577963770.txt的文本文件,多次生成会生成多个以def为前缀,txt为后缀,中间为19为随机数的多个文本文件,
4、访问文件对象的常用属性
当new File() 创建的文件对象为文件夹时,可以通过文件对象访问文件夹的相关属性。
isFile()判断是否为文件
mkdir()创建目录,只能创建一级目录,不能创建如”c:/avc/xyz/help”、rigi平xyz不存在,不能创建help路径。
mkdirs() 可以创建多级目录
String[] list() 列出路径中的文件名和目录名,打印第一层信息
File[] listFiles() 得到路径下的文件或目录。
1 File dir = new File("E:/新建文件夹"); 2 System.out.println("E盘下的文件:"); 3 for(File file:fileList){ 4 System.out.println(" 文件名: " +file.getName() +" 文件路径: "+file.getPath()+"是否为目录:"+ 5 file.isDirectory()+"是否为文件:"+file.isFile()); 6 } 7 //用listFiles()获取特殊的类型的文件 8 File[] docfile = dir.listFiles(new FileStudy("doc")); 9 System.out.println("E盘下的doc文件:"); 10 for(File file:docfile){ 11 System.out.println(" " +file.getName() +" "+file.getPath()); 12 }