loading黑马程序员之IOFile(2-4)

来源:互联网 发布:网络2d游戏排行榜2016 编辑:程序博客网 时间:2024/05/22 05:23

-------android培训 、java培训、期待与您交流! ----------

/**

 * 流的局限性:只能操作数据,不能操作文件夹【拒绝访问异常】和文件属性
 * -------------------------------------------------------------------------
 * File类的常见方法:
 * 1.   增boolean createNewFile()【存在则不再创建】
 * 创建文件夹 mkdir(); mkdirs,创建多级目录文件夹
 * 删 delete()
 * deleteOnExit()【JVM退出时删除(临时文件)】
 * 2.判断
 * 是否是目录boolean isDirectory()
 * 是否是文件 isFile()
 * 是否存在 exists()
 * 是否是隐藏文件isHidden()
 * 是否是绝对路径 isAbsolute()
 *
 * 2. 获取
 * 获取(绝对)路径 getPath() getAbsolutePath【文件可以不存在】
 * 绝对路径中的父目录 getParent()
 * 最后一次修改时间 long lastModified()
 * 长度:length()
 * file1.renameTo(file2)剪切,如果file2存在,剪切失败
 * 3。修改:用流
 *-------------------------------------------------------------------------
 * 注意:
 *1.判断文件是目录还是文件时,记得先判断该文件是否存在,因为不存在的文件既不是目录,也不是文件
 *2.文件名是xx.txt不一定就是文件夹哦,例如:
 * File file = new File("1.txt");
System.out.println(file.mkdir());
System.out.println("directory:"+file.isDirectory());-----true
System.out.println("file:"+file.isFile());-----false
当然,前提是file.mkdir()创建成功。

 */

package com.heima.io.file;import java.io.File;import java.util.ArrayList;import java.util.List;/** *  * 要求:列出指定文件夹下所有文件【包括子文件夹下的】 * 思想:递归:函数自己调用自己 * 递归使用注意: * 1.限定条件,就是出口(递归相当于是一个循环,限定条件就是循环结束条件) * 2.每次递归都会在方法区开辟一块内存,而且都没有结束,一旦递归次数过多就容易产生内存溢出 */public class ListAllFiles {public static void main(String[] args) {List<File> list = getFiles(new File("hello"));for(File f : list){System.out.println(f.getName());}}/** * 得到指定文件夹下所有文件【包括子文件夹下的文件】 * @param dir * @return */public static List<File> getFiles(File dir){List<File> list = new ArrayList<File>();File[] files = dir.listFiles();for(File f : files){if(f.isDirectory()){//如果是目录,递归for(File subf : getFiles(f)){list.add(subf);}}else{list.add(f);//是文件则添加进list}}return list;}/** * 删除指定文件夹下所有文件和文件夹 * @param dir * @return */public static boolean deleteFiles(File dir){boolean flag = true;if(dir.exists() && dir.isDirectory()){File[] files = dir.listFiles();for(File f : files){if(!f.isHidden()){if(f.isDirectory()){if(!deleteFiles(f)){flag = false;}}else{if(!f.delete()){//删除文件失败flag = false;}}}}if(!dir.delete()){//删除文件夹失败flag = false;}}else{flag = false;}return flag;}/** * 用递归实现十进制转二进制 * @param n * @return */public static String toBin(long n){StringBuffer sb = new StringBuffer();if(n>0){sb.append(toBin(n/2));sb.append(n%2);}return sb.toString();}}

package com.heima.io.file;import java.io.File;import java.io.FilenameFilter;/** * 功能:列出指定目录下所有Java文件 * 对文件名过滤 * */public class FilenameFilterDemo {public static void main(String[] args) {File file = new File("src\\com\\heima\\basic");File[] list = file.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {if(name.endsWith("java")){return true;}return false;}});for(File f : list){System.out.println(f.getName());}}}

-------android培训 、java培训、期待与您交流! ----------



0 0
原创粉丝点击