Java核心API之File使用技巧
1、CPU,内存和硬盘之间的关系在讲述File对象之前,简单的介绍一下CPU,内存和硬盘之间的关系,深入了解可以自行翻阅资料。CPU:中央处理器,处理指令和各种数据,通俗讲就像人类的心脏一样,处理数据流。内存:内存储器,暂时存放CPU要运算的数据,性能要求相对较高。硬盘:又称磁盘,可以永久的存储数据,但是运算速度较内存低。如果CPU需要处理数据,直接从硬盘读取,硬盘虽然大,但运算速度低,这样可以导致CPU使用率不高。所以,将CPU要处理的数据,从硬盘取出暂时放在内存上,CPU直接与内存交互,提高CPU使用率,也提高了电脑运行速率。当内存资源不如时,再从硬盘读取数据暂存放内存。

3、首疏扌熘创建File对象 /* * new File(String pathname) * 通过文件路径创建对象 */ @Test public void testNewFile烫喇霰嘴(){ File file = new File("demo"+File.separator+"test.txt"); System.out.println(file); } /* * new File() * 通过父文件对象和子文件路径创建对象 */ @Test public void testNewFile2(){ File parent = new File("demo"); File file = new File(parent,"test.txt"); System.out.println(file); }File类有许多构造方法,上面是其中两例,有感兴趣的朋友可以深入学习一下。注意:为了屏蔽平台(window,linux等)差异带来的影响,文件路径分隔符建议用File.separator。

5、isDirectory()方法判断当前File对象是否为目录 /* *boolean isDirectory() *判断当前当酡箔挝棍前File对象是否为目录 */ @Test public void testIsDirectory(){ File file = new File("demo"+File.separator+"a"); boolean flag = file.isDirectory(); System.out.println(file+"是否目录:"+flag); File file2 = new File("demo"+File.separator+"b"); boolean flag2 = file2.isDirectory(); System.out.println(file2+"是否目录:"+flag2); }一般结合isFile()方法可以判断File对象是文件还是目录,然后进行业务处理。

7、createNewFile()方法创建新文件 /* * boolean createNewFile() *方法用于创建新文件,创捋杏野卫建成功返回true,否则返回false */ @Test public void testCreateNewFile() throws IOException { File file = new File("demo"+File.separator+"test.txt"); boolean flag = false; if(!file.exists()){ flag = file.createNewFile(); if(flag){ System.out.println("创建文件成功"); }else{ System.out.println("创建文件失败"); } } }createNewFile()只负责创建文件,不创建目录,创建成功返回true,否则返回false。

9、mkdirs()用于创建路径名指定的所有目录 /* * boolean mkdirs() * 用于创建文件路径名指定的所有目录 */ @Test public void testMkdirs(){ File file = new File("demo" +File.separator+"a" +File.separator+"b"); boolean flag = file.mkdirs(); System.out.println("目录是否创建成功:"+flag); }注意:mkdir()创建失败时也有可能已经成功创建了一部分目录。


12、FileFilter用于抽象路径名的过滤器 /* * FileFilter接口用于抽象路径名的过滤 */ @Test public void testFileFilter(){ File file = new File("demo"); File[] files = file.listFiles(new FileFilter(){ @Override public boolean accept(File fil){ return fil.getName().endsWith(".txt"); } }); for(int i=0; i<files.length;i++){ System.out.println(files[i].getName()); } }将此接口传递给File类中listFiles()方法,用于获取满足过滤条件的子项。
