zoukankan      html  css  js  c++  java
  • JAVA File类(文件的遍历,创建,删除)

    File类构造函数

    	File f1=new File("H://asc//");//传入文件/目录的路径
    		File f2=new File(f1,"test.txt");//第一个参数为一个目录文件,第二个参数为要在当前f1目录下要创建的文件
    	
    		

    file.list();  获得file文件夹下所有文件/目录的字符串数组

    	String []liStrings=f1.list();
    		for (int i = 0; i < liStrings.length; i++) {
    			System.out.println(liStrings[i]);
    		}
    		
    	 

    利用list()函数遍历文件夹,递归显示文件夹下的文件/文件夹

    public static void dfs(String filename) { // java 中区分大小写 String类首字母大写
    
    		File f = new File(filename);
    		String namelist[] = f.list();
    		for (int i = 0; i < namelist.length; i++) {
    			File fchild = new File(filename + "/" + namelist[i]);
    			for (int j = 0; j < deep; j++)
    				System.out.print("   ");
    			if (!fchild.isDirectory())
    				System.out.println(namelist[i]);// 文件 打印
    			else {// 目录
    				System.out.println(namelist[i] + "/");// 先打印 再递归调用本身
    				dfs(filename + "/" + namelist[i]);
    			}
    		}
    	}
    

      

    file.isFile()判断当前file文件是否是文件    file.isDirectory()是否为目录     file.exist(); 此文件或者目录是否存在

    		File f1=new File("H://asc//");//
    		File f2=new File(f1,"test.txt");//
    		File f3=new File("H://notexistdir");
    //	
    		System.out.println(f1.isFile());
    		System.out.println(f2.isFile());
    		System.out.println(f3.isFile());
    		
    		System.out.println(f1.isDirectory());
    		System.out.println(f2.isDirectory());
    		
    		System.out.println(f3.exists());
     //运行结果:
    false
    true
    false
    true
    false
    false
    

      

      

    文件/目录的创建,删除

    函数file.createNewFile()  创建此File对象文件 如果file之间已经存在,createNewFile 返回fasle 创建文件失败

    函数 file.mkdir() 创建文件目录  ,此函数有个缺点 就是只能在已存在的路径下创建文件夹 如果你的File对象路径在电脑中不存在 则会创建失败。而使用 file.mkdirs() 即使文件路径不存在 函数会自动创建相应的文件夹目录 保证file对象的创建成功,

    建议使用mkdirs()来创建文件夹

    	public void creatnewfile(String path) {// 创建新文件目录
    		File file = new File(path); 
    		if (file.exists()) { //判断此路径下的文件存在否
    			System.out.println("此文件已经存在!");
    			return;
    		}
    		System.out.println("创建此路径下的文件/目录?");
    		System.out.println("输入1创建文件目录                 输入2 创建文件 ");
    
    		Scanner scanner = new Scanner(System.in);
    		int j = scanner.nextInt();
    		if (j == 2) {
    			try {
    				file.createNewFile();//创建文件
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		} else {
    			file.mkdirs();//创建目录
    		}
    	}
    

      file.delete()可实现文件/文件夹的删除 ,delete()函数虽然可以删除文件 ,但是在文件夹的删除上,只能实现对空目录的删除,如果你要删除的文件夹下面有文件/文件夹 则会删除失败

      如果要实现对此类文件夹的删除 可以使用dfs遍历文件目录 +delete()实现

        public boolean deleteFile(String path) {// 删除文件|目录(连联删除)
            File file = new File(path);
            if (!file.exists()) {
                System.out.println("文件不存在!");
                return false;
            }        
            dfsdelete(path);
            return true;
        }
    
        public void dfsdelete(String path) {
            File file=new File(path);
            if(file.isFile()) {//如果此file对象是文件的话,直接删除
                file.delete();
                return;
            }
            //当 file是文件夹的话,先得到文件夹下对应文件的string数组 ,递归调用本身,实现深度优先删除
                String [] list=file.list();
                for (int i = 0; i < list.length; i++) {
                    dfsdelete(path+File.separator+list[i]);
                    
                }//当把文件夹内所有文件删完后,此文件夹已然是一个空文件夹,可以使用delete()直接删除
                file.delete();
            return;
        }
        
  • 相关阅读:
    第16章 行为型模式—命令模式
    第15章 行为型模式—职责链模式
    第14章 结构型模式—代理模式
    第12章 结构型模式—外观模式
    第11章 结构型模式—装饰模式
    第10章 结构型模式—组合模式
    第9章 结构型模式—桥接模式
    第8章 结构型模式—适配器模式
    Qt中Qstring,char,int,QByteArray之间到转换(转)
    QT:QByteArray和QByteArray、char *(转)
  • 原文地址:https://www.cnblogs.com/yellowbananame/p/8946613.html
Copyright © 2011-2022 走看看