精华内容
下载资源
问答
  • 1. 以下的代码可以用来复制文件夹的所有文件、目录。但目的目录是源目录子目录就不行了,会死循环调用。 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import ...
    1. 以下的代码可以用来复制文件夹中的所有文件、目录。但目的目录是源目录的子目录就不行了,会死循环调用。
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class test {
    	public static void main(String[] args) throws IOException {
    		copyDir("E:/Z","E:/Z/Z");
    		System.out.println("复制完成!");
    	}
    	/**
    	* 复制目录
    	* @param fromDir
    	* @param toDir
    	* @throws IOException
    	*/
    	public static void copyDir(String fromDir,String toDir) throws IOException{
    		//创建目录的File对象
    		File dirSouce = new File(fromDir);
    		//判断源目录是不是一个目录
    		if (!dirSouce.isDirectory()) {
    			//如果不是目录那就不复制
    			return;
    		}
    		//创建目标目录的File对象
    		File destDir = new File(toDir);	
    		//如果目的目录不存在
    		if(!destDir.exists()){
    			//创建目的目录
    			destDir.mkdir();
    		}
    		//获取源目录下的File对象列表
    		File[]files = dirSouce.listFiles();
    		for (File file : files) {
    			//拼接新的fromDir(fromFile)和toDir(toFile)的路径
    			String strFrom = fromDir + File.separator + file.getName();
    			System.out.println(strFrom);
    			String strTo = toDir + File.separator + file.getName();
    			System.out.println(strTo);
    			//判断File对象是目录还是文件
    			//判断是否是目录
    			if (file.isDirectory()) {
    				//递归调用复制目录的方法
    				copyDir(strFrom,strTo);
    			}
    			//判断是否是文件
    			if (file.isFile()) {
    				System.out.println("正在复制文件:"+file.getName());
    				//递归调用复制文件的方法
    				copyFile(strFrom,strTo);
    			}
    		}
    	}
    	/**
    	* 复制文件
    	* @param fromFile
    	* @param toFile
    	* @throws IOException
    	*/
    	public static void copyFile(String fromFile,String toFile) throws IOException{
    		//字节输入流——读取文件
    		FileInputStream in = new FileInputStream(fromFile);
    		//字节输出流——写入文件
    		FileOutputStream out = new FileOutputStream(toFile);
    		//把读取到的内容写入新文件
    		//把字节数组设置大一些   1*1024*1024=1M
    		byte[] bs = new byte[1*1024*1024];	
    		int count = 0;
    		while((count = in.read(bs))!=-1){
    			out.write(bs,0,count);
    		}
    		//关闭流
    		in.close();
    		out.flush();
    		out.close();
    	}
    }
    
    2. 如果创建了上万个文件夹,是无法直接删除的。

    在这里插入图片描述

    3. 可以用Java编写代码删除,如下。
    import java.io.File;
    import java.io.IOException;
    
    public class deletetest {
    	public static void main(String[] args) throws IOException {
    		File fromDir = new File("E:/Z");
    		copyDir(fromDir);
    	}
    	public static void copyDir(File fromDir){
    		File[] bb = fromDir.listFiles();
    		for (int i = 0; i < bb.length; i++) {
    			if (bb[i].isDirectory()) {
    				System.out.println(bb[i]);
    				copyDir(bb[i]);
    				System.out.println(bb[i].toString()+"删除文件夹"+bb[i].delete());
    			}
    			else{
    				System.out.println(bb[i].toString()+"删除文件"+bb[i].delete());
    			}
    		}
    	}
    }
    
    展开全文
  • 递归查找文件夹所有文件

    千次阅读 2017-03-08 20:50:53
    如何查找某个目录下文件及所有子文件夹文件思路:将if判断条件分布进行,先判断文件存在,把文件夹也放进来循环循环中判断是否是文件夹,是则递归调用自身,把当前文件夹内文件打印出来import java.io....

    如何查找某个目录下文件及所有子文件夹下的文件

    思路:将if判断条件分布进行,先判断文件存在,把文件夹也放进来循环
    在循环中判断是否是文件夹,是则递归调用自身,把当前文件夹内的文件打印出来

    import java.io.File;
    
    /**
     * @author Administrator
     *
     */
    public class Java_3
    {
        public static void main(String[] args)
        {
            getFile("F:\\", "  ");
        }
    
        /**
         * 封装实现文件查找功能的类
         * @param path 传入要遍历的文件目录 
         * @param tab 传入空格,区分文件夹及其子文件夹
         */
        public static void getFile(String path, String tab)
        {
            File file = new File(path);
    
            if (file.exists())
            {   //文件存在 用File类数组接收目录下所有的文件的抽象路径
                File[] listFile = file.listFiles();
    
                //遍历目录下所有文件判断是否为文件夹
                for (File file2 : listFile)
                {
                    System.out.println(tab + file2.getName());
                    // 如果是目录,把当前目录和taB作为参数传入,调用自身,
                    if (file2.isDirectory())
                    {//传入子文件夹路径并换行
                        getFile(file2.getPath(), tab + "\t");
                    }
                }
    
            }
        }
    }

    控制台输出:

    控制台输出.png

    展开全文
  • 分享下java 读取目录...而读取jsp源代码需要知道文件绝对路径,所有通过项目文件夹路径先取出所有jsp文件目录循环解析。 最后通过搜索和自己努力写成一个完整测试类,供以后查阅,同时分享一下。 ps:
    分享下java 读取目录及子目录下指定文件名的路径 并放到一个List数组里面返回遍历和写到文件里。
    由于公司要求读取项目下所有jsp文件,并读取开头的自定义的注释来生成类似javadoc的东西进行页面管理。
    而读取jsp源代码需要知道文件的绝对路径,所有通过项目文件夹路径先取出所有jsp文件目录再循环解析。
    最后通过搜索和自己的努力写成一个完整的测试类,供以后查阅,同时分享一下。
    ps:通过这个测试类,复习了下数组List Iterator io 泛型和递归函数,虽然很简单但综合起来用还是遇到了些小问题化了一个多小时调试,例如有些异常文件没有后缀名的用.去判断返回的索引就是-1了,如果没有判断后面的操作就出现异常了,因此我在关键地方加了注释,希望对大家有帮助。

    import java.io.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    /**
    * 读取目录及子目录下指定文件名的路径 并放到一个数组里面返回遍历
    * @author huangmayi
    *
    */
    public class FileViewer {
    public static void main(String[] args) {
       List arrayList = FileViewer.getListFiles("d:/ajax","html",true);
      
       if(arrayList.isEmpty())
       {
        System.out.println("没有符号要求的文件");
       }
       else
       {
        String message = "";
        message += "符号要求的文件数:" + arrayList.size() + "\r\n";
        System.out.println(message);
       
        for (Iterator i = arrayList.iterator(); i.hasNext();)
        {
         String temp = (String) i.next();
         System.out.println(temp);
         message += temp + "\r\n";
        }
       
        appendMethod("d:/ajax/menu.txt",message);
       }
    }
    public static List<String> fileList = new ArrayList<String>();

    /**
    *
    * @param path 文件路径
    * @param suffix 后缀名
    * @param isdepth 是否遍历子目录
    * @return
    */
    public static List getListFiles(String path, String suffix, boolean isdepth)
    {
       File file = new File(path);
       return FileViewer.listFile(file ,suffix, isdepth);
    }

    public static List listFile(File f, String suffix, boolean isdepth)
    {
       //是目录,同时需要遍历子目录
       if (f.isDirectory() && isdepth == true)
       {
        File[] t = f.listFiles();
        for (int i = 0; i < t.length; i++)
        {
         listFile(t[i], suffix, isdepth);
        }
       }
       else
       {
        String filePath = f.getAbsolutePath();
       
        if(suffix !=null)
        {
         int begIndex = filePath.lastIndexOf(".");//最后一个.(即后缀名前面的.)的索引
         String tempsuffix = "";
        
         if(begIndex != -1)//防止是文件但却没有后缀名结束的文件
         {
          tempsuffix = filePath.substring(begIndex + 1, filePath.length());
         }
        
         if(tempsuffix.equals(suffix))
         {
          fileList.add(filePath);
         }
        }
        else
        {
         //后缀名为null则为所有文件
         fileList.add(filePath);
        }
       
       }
      
       return fileList;
    }

    /**
        * 方法追加文件:使用FileWriter
        * @param fileName
        * @param content
        */
    public static void appendMethod(String fileName, String content)
    {
        try
        {
         //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
         FileWriter writer = new FileWriter(fileName, true);
         writer.write(content + "\r\n");
         writer.close();
        }
        catch (IOException e)
        {
         e.printStackTrace();
        }
    }
    }

    展开全文
  • 思路首先我们要先获得文件夹v1下所有的文件夹名。 因为打jar包格式:ggservice-文件夹名.jar形式。 我会先对整个项目进行javac编译,之后再cd进入到v1路径中, for循环得到的文件夹名,进行打jar包。得到某目录...

    需求

    公司每次升级正式环境都是对着项目各个模块进行单独打包。
    现在公司希望使用shell脚本来批量的自动打包,以减少人工出错的情况。

    这里写图片描述

    思路

    ①我会先对整个项目进行javac编译,把编译后的.class文件放到classes文件夹中。

    ②再cd进入到v1文件夹中,获得文件夹v1下所有的文件夹名。
    因为到时打jar包时,需要模糊匹配相关路径下的.class文件。
    并且打jar包格式:ggservice-文件夹名.jar的形式。

    for循环得到的文件夹名,进行打jar包。

    得到某目录下中全部文件夹名的方法

    参考链接:
    http://blog.csdn.net/sidely/article/details/40426725

    方法一

    #!/bin/bash
    
    dir=$(ls -l D:/temp/ |awk '/^d/ {print $NF}')
    for i in $dir
    do
        echo $i
    done   
    

    方法二

    
    for dir in $(ls D:/tmep/)
    do
        [ -d $dir ] && echo $dir
    done        
    

    方法三

    ls -l D:/temp/ |awk '/^d/ {print $NF}'   
    

    其实同方法一,直接就可以显示不用for循环

    剩下的就简单啦!直接上全部代码:
    下面的代码是写在jenkins中的Execute shell中的脚本:

    #!/bin/bash
    export PATH=~/play-1.2.7:$PATH
    #获得当前目录
    cur=$(pwd)
    echo "pwd:"${cur}
    fileName=${WORKSPACE##*/}
    echo "当前工作空间目录名称:"${fileName}
    rm -rf ggservice-dataservice.jar
    output_path=${cur}/classes
    package=${cur}/package
    echo $output_path
    if [ ! -d $output_path ]; then
    	mkdir $output_path
    fi
    
    if [ ! -d $package ]; then
    	mkdir $package
    fi
    
    ## 获取依赖库和需要编译的java文件
    export libs=`find ./dataservice/lib -name "*.jar" |xargs|sed "s/ /:/g"`
    export javafiles=`find ./dataservice/ -name "*.java" |xargs|sed "s/ / /g"`
    export javautils=`find ./utils/app/ -name "*.java" |xargs|sed "s/ / /g"`
    export play_lib=/opt/play-1.2.7/framework/play-1.2.7.jar
    export play_lib_common=`find /opt/play-1.2.7/framework/lib/ -name "*.jar" |xargs|sed "s/ /:/g"`
    #echo ${javafiles}
    #echo "公共---------"
    #echo ${javautils}
    
    # 清除
    rm -rf package/*
    # 清除编译后的class文件
    rm -rf ${output_path}/*
    
    # 编译
    tc=`javac -d ${cur}/classes -cp ${libs}:$play_lib:$play_lib_common -encoding utf-8 ${javafiles} ${javautils} 2>&1`
    if [[ "x" != "x$tc" ]] && [[ "$tc" =~ "错误" || "$tc" =~ "error" ]]
    then
      echo "javac 编译出错"
      echo "$tc"
      exit 1
    else
      echo "javac 编译成功"
      echo "$tc"
    fi
    
    # 分批打包
    #cd /home/jenkins/workspace/ggservice/dataservice/app/ggservice/v1/
    cd /home/jenkins/workspace/ggservice-pre-jar/dataservice/app/ggservice/v1
    dir=$(ls -l |awk '/^d/ {print $NF}')
    cd $output_path
    for i in $dir
    do
    	echo "ggservice-"${i}".jar打包情况":
    	jar -cvf ${package}/ggservice-${i}.jar */v1/$i/*
    done
    # 对公共基础包进行打包
    export baseclass=`find ./ -path '*/ggservice/common/*.class' -o -path '*/ggservice/constant/*.class'`
    echo "ggservice-base.jar 打包情况":
    jar -cvf ${package}/ggservice-base.jar ${baseclass}
    
    
    # 对Model包进行打包
    export modelclass=`find ./ -path '*/ggservice/model/*.class'`
    echo "ggservice-model.jar 打包情况":
    jar -cvf ${package}/ggservice-model.jar ${modelclass}
    
    # utils 包进行打包
    export utilsclass=`find ./ -path '*/ggframework/utils/common/*.class'`
    echo "ggframework-utils_2.10.jar 打包情况":
    jar -cvf ${package}/ggframework-utils_2.10.jar ${utilsclass}
    
    # 把项目依赖的jar统一放到一个文件夹中,节省空间
    cd ${WORKSPACE%/*}
    #mv -f `find . -path "*/lib/*"  -name "*.jar"` ../lib/
    #echo ${WORKSPACE}
    ./mvlib.sh ${WORKSPACE##*/}
    
    展开全文
  • 复习IO流-复制文件夹

    2018-10-31 21:53:54
    1.迭代1:实现一个文件的复制 import java.io.*; /**  * 功能:实现文件夹的复制 ...复制源文件夹下的所有文件到目的文件夹 IO流+循环  * 3.重复以上两步,知道没有文件和子文件夹 递归  *   * 问题...
  • 1.4.3 main()方法:所有Java程序执行起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler) 17 1.5.3 Java类库(Java Class Libraries) 17 1.5.4 Java虚拟机(Java Virtual ...
  • 1.4.3 main()方法:所有Java程序执行起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler) 17 1.5.3 Java类库(Java Class Libraries) 17 1.5.4 Java虚拟机(Java Virtual ...
  • 1.4.3 main()方法:所有Java程序执行起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler) 17 1.5.3 Java类库(Java Class Libraries) 17 1.5.4 Java虚拟机(Java Virtual ...
  • java 读取文件

    2019-09-02 17:13:13
    读取文件步骤: 1 先创建文件对象 2 判断是否是目录,如果是目录,将目录全部拿到。创建一个文件数组 ...//要求遍历指定文件夹下,所有文件以及每一个子文件夹的所有文件内容 static void showFiles(Stri...
  • Java File复制指定文件

    2019-05-07 11:20:36
    方法一:复制目录下的所有文件,不包括目录本身 先定义一个方法copyFile,里面传入两个String...在声明一个temp为空,判断指定目录下是否有相同文件名的文件,然后利用循环来读取指定复制文件下的目录子文件,递...
  •  列出指定目录下文件或者文件夹,包含子目录内容。也就是列出指定目录所有内容。因为目录中还有目录,只要使用同一个列出目录功能函数完成即可。 在列出过程中出现还是目录的话,还可以再次调用本功
  • 实例081 去掉字符串中的所有空格 实例082 汉字与区位码的转换 第5章 面向对象技术应用 5.1 Java中类的定义 实例083 自定义图书类 实例084 温度单位转换工具 实例085 域的默认初始化值 实例086 编写同名的...
  • 实例081 去掉字符串中的所有空格 实例082 汉字与区位码的转换 第5章 面向对象技术应用 5.1 Java中类的定义 实例083 自定义图书类 实例084 温度单位转换工具 实例085 域的默认初始化值 实例086 编写同名的...
  • 实例308 压缩所有子文件夹 实例309 深层文件夹压缩包释放 实例310 解决压缩包中文乱码 实例311 Apache实现文件解压缩 实例312 解压缩Java对象 实例313 文件压缩为RAR文档 实例314 解压缩RAR压缩包 实例315...
  • 实例081 去掉字符串中的所有空格 101 实例082 汉字与区位码的转换 102 第5章 面向对象技术应用 103 5.1 Java中类的定义 104 实例083 自定义图书类 104 实例084 温度单位转换工具 105 实例085 域的默认初始化值 106 ...
  • 实例081 去掉字符串中的所有空格 101 实例082 汉字与区位码的转换 102 第5章 面向对象技术应用 103 5.1 Java中类的定义 104 实例083 自定义图书类 104 实例084 温度单位转换工具 105 实例085 域的默认初始化值 106 ...
  • 批量删除.svn文件

    2011-06-02 10:24:06
    拷源代码时,如果直接拷工作...以下是一个reg文件,导入后即在鼠标右键菜单中出现“Delete SVN Folders”按键,选中要删除.svn文件文件夹,执行后将删除该文件夹及子文件夹所有.svn文件。 [code="java...
  • * 1.String[] list()获取当前文件夹下所有的子文件夹或者子文件名 //文件没有下一级 2.File[] listFiles() 获取当前文件夹下所有的子文件夹或者子文件对象 ===================================有...
  • 斐波拉西数

    2020-07-23 22:50:41
    小时候斐波拉西数之谜,今晚终于解开了,开森哈哈 用递归(与非递归探寻中)实现斐... * 遍历文件夹以及其子目录 递归 方法自己调用自己 阶乘:一个正整数阶乘(factorial)是所有小于及等于该数正整数
  • finishAllActivitiesExceptNewest: 结束除最新之外的所有 Activity 操作系统、SDK相关 -> AndroidUtils.java            回到目录 isNamedProcess : 判断当前进程中是否包含指定名称的进程 gc...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    程序可以采用 JAVA 开发,但是因为它虚拟机 (Virtual Machine) Dalvik ,是将 JAVA bytecode 转成 自 己格式,回避掉需要付给 SUN 有关 JAVA 授权费用。 对手机制造者影响 � Android 是款开源移动计算...
  • 感谢我博客上所有读者的访问、浏览、关注、支持、留言、评论、批评、指正,仅以本书献给我博客的所有读者。 感谢Boshen、sallen450、marchtea、nateriver520等朋友帮我把博客上的部分经典文章移到GitHub上。 感谢...
  • Visual C++ 2005 入门经典 详细书签版

    热门讨论 2013-02-02 16:39:43
    CruiseYoung提供带有详细书签电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Visual C++ 2005入门经典 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2005 原出版社: Wiley 作者...
  • CruiseYoung提供带有详细书签电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Visual C++ 2005入门经典》源代码及课后练习答案 对应书籍资料见: Visual C++ 2005入门经典 ...
  • 下载完成后,把16b版本toolchains\mips64el-linux-android-4.9\prebuilt\windows-x86_64的所有文件copy到r17中toolchains\mips64el-linux-android-4.9\prebuilt\windows-x86_64目录下也可以解决 Invoke-customs ...
  • CruiseYoung提供带有详细书签电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle SQL 原出版社: ...
  • CruiseYoung提供带有详细书签电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Oracle SQL高级编程》源代码 对应书籍资料见: Oracle SQL高级编程(资深Oracle专家力作,...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
     《iphone开发秘籍(第2版)》提供了关于iphone sdk以及iphone开发的全面信息,对iphone sdk中的各种组件做了深入浅出的介绍,包括iphone 3.0 sdk的所有新增特性,同时对iphone开发的基本流程、基本原理和基本原则...
  •  删除所有与Oracle相关的目录,包括: C:\Program file\Oracle目录。 ORACLE_BASE目录。 C:\Documents and Settings\系统用户名、LocalSettings\Temp目录下的临时文件。 七、 oracle中的数据库 八、 常用的工具 ...
  • vue所有基础语法部分 插值操作 Mustache <div id="app"> <h2>{{message}}</h2> <h2>{{message}}, 李银河!</h2> <!--mustache语法中,不仅仅可以直接写变量,也可以写简单...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

java循环文件夹的所有子文件夹的目录

java 订阅