Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流!
File类
1、用来将文件或者文件夹封装成对象,以方便对文件和文件夹进行操作。
2、File对象可以作为参数传递给流的构造函数。
File对象功能:
创建和删除:
1、boolean createNewFile(): 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。
2、boolean mkdir():创建此抽象路径名指定的目录。
3、boolean mkdirs():创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。
4、boolean delete():删除此抽象路径名表示的文件或目录。
5、boolean deleteOnExit():在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
示例代码:
import java.io.File; import java.io.IOException; public class Test{ public static void main(String...args) throws Exception { File f = new File("C:\\文件夹\\1.Java"); File f1 = new File("C:\\文件夹"); File f2 = new File("C:"+File.separator+"1.java");//separator与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。 //创建一个目录。 f1.mkdir(); //创建一个文件夹,如果传入文件名中还有文件夹,会自动创建根文件夹和子文件夹。 f.mkdirs(); /* 调用文件的创建方法,如果该文件的目录不存在,那么将报异常, 如果该文件存在的话,就不创建文件,如果不存在就创建该文件。 */ f.createNewFile(); //休息4秒种 Thread.sleep(4000); //创建了一个文件,如果虚拟机退出,那么该文件将自动删除。 f.deleteOnExit(); } public static void sop(Object obj){ System.out.println(obj); } }
判断:
1、boolean exists():测试此抽象路径名表示的文件或目录是否存在。
2、boolean isAbsolute():测试此抽象路径名是否为绝对路径名。
3、boolean isDirectory():测试此抽象路径名表示的文件是否是一个目录。
4、boolean isFile():测试此抽象路径名表示的文件是否是一个标准文件。
5、boolean isHidden():测试此抽象路径名指定的文件是否是一个隐藏文件。
示例代码:
import java.io.File; import java.io.IOException; public class Test{ public static void main(String...args)throws IOException{ File f = new File("C:\\1.Java"); //是否是可执行文件 sop(f.canExecute()); //文件是否存在 sop(f.exists()); //是否是一个文件 sop(f.isFile()); //是否是一个目录 sop(f.isDirectory()); //是否是隐藏文件 sop(f.isHidden()); } public static void sop(Object obj){ System.out.println(obj); } }
获取:
1、File getAbsoluteFile():返回此抽象路径名的绝对路径名形式。
2、String getAbsolutePath():返回此抽象路径名的绝对路径名字符串。
3、File getCanonicalFile():返回此抽象路径名的规范形式。
4、String getCanonicalPath():返回此抽象路径名的规范路径名字符串。
5、long getFreeSpace():返回此抽象路径名指定的分区中未分配的字节数
6、String getName():返回由此抽象路径名表示的文件或目录的名称。
7、String getParent():返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null
。
8、File getParentFile():返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null
9、String getPath():将此抽象路径名转换为一个路径名字符串。
10、boolean renameTo(File dest):重新命名此抽象路径名表示的文件。
11、static File[] listRoots():列出可用的文件系统根。
12、String[] list():返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
代码示例:
import java.io.File; public classTest{ public static void main(String...args){ File[] file = File.listRoots(); for(File f : file){ System.out.println(f); } File f = new File("G:\\"); String[] name = f.list(); for(String fileName : name){ System.out.println(fileName); } } }
应用实例1:
需求:列出一个目录下的所有内容的代码:
/* 列出指定目录下文件或者文件夹,包含子目录中的内容。 也就是列出指定目录下所有内容 因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。 在列出过程中出现还是目录的话,还可以在此调用本功能 也就是函数自身调用自身, 这种表现形式,或者编程手法,成为递归 递归要注意: 1、限制条件 2、要注意递归次数,避免内存溢出 */ import java.io.File; public class Test{ public static void main(String...args){ File dir = new File("D:\\Demo"); dir(dir,0); } //求文件层级的函数 public static String getLevel(int level){ StringBuilder sb = new StringBuilder(); for(int x=0;x<level;x++){ sb.append(" "); } return sb.toString(); } //列出目录下所有内容的函数 public static void dir(File dir,int level){ sop(getLevel(level)+dir); level++; File[] files = dir.listFiles(); for(Filefile:files){ if(!file.isHidden()){ if(file.isDirectory()) dir(file,level); else sop(getLevel(level+1)+file); } } } public static void sop(Object obj){ System.out.println(obj); } }
应用示例2:
需求:将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
/* 练习 将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。 建立一个java文件列表文件。 思路: 1,对指定的目录进行递归。 2,获取递归过程所以的java文件的路径。 3,将这些路径存储到集合中。 4,将集合中的数据写入到一个文件中。 */ import java.io.*; import java.util.*; class JavaFileList { public static void main(String[] args) throws IOException { File dir = new File("d:\\java1223"); List<File> list = new ArrayList<File>(); fileToList(dir,list); //System.out.println(list.size()); File file = new File(dir,"javalist.txt"); writeToFile(list,file.toString()); } public static void fileToList(File dir,List<File> list) { File[] files = dir.listFiles(); for(File file : files) { if(file.isDirectory()) fileToList(file,list); else { if(file.getName().endsWith(".java")) list.add(file); } } } public static void writeToFile(List<File> list,String javaListFile)throws IOException { BufferedWriter bufw = null; try { bufw = new BufferedWriter(new FileWriter(javaListFile)); for(File f : list) { String path = f.getAbsolutePath(); bufw.write(path); bufw.newLine(); bufw.flush(); } } catch (IOException e) { throw e; } finally { try { if(bufw!=null) bufw.close(); } catch (IOException e) { throw e; } } } }
总结:File中注意:
1、File.speparator的作用是判断在不同的系统中斜杠的方向
在windows中斜杠的方向是向右斜的\\
在Linux 中斜杠的方向是向左斜的//
2、delete()方法可以删除一个文件或者一个整个文件夹(整个目录),返回结果是布尔类型。
不论是创建文件、创建目录还是删除文件,只有在动作真正发生的时候会返回true。