通过递归来拷贝文件(使用控制台输入参数+bat处理文件快速运行)
来源:互联网 发布:湘北vs山王工业数据 编辑:程序博客网 时间:2024/04/27 21:27
知识点:
递归
IO流
控制台传参
bat处理文件
将bat文件加载到任务栏(一键拷贝)
使用控制台传参方法拷贝文件:(路径可在控制台输入也可在java源文件中修改)
import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;public class CopyDir {public static void main(String[] args) throws IOException {String pathFrom = "";String pathTo = "";// 在控制台运行文件时传参,省去了编译过程if (args.length == 2) { pathFrom = args[0]; pathTo = args[1]; } else{ // 手动指定路径,需要进行编译再运行 pathFrom = "D:/MyEclipse/Web/WebFrom";pathTo = "F:/software/apache-tomcat-7.0.42/webapps/WebFrom"; }File dir = new File(pathFrom);File destDir = new File(pathTo);// 当拷贝的路径已经存在文件时,先将文件夹删除再拷贝if(destDir.exists()){deleteDir(destDir);}destDir.mkdir();copyDir(dir, destDir);Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss") ; String time = dateFormat.format(date); System.out.println("拷贝成功 " + time);}private static void deleteDir(File dir) {File[] files = dir.listFiles();for(File file : files){if(file.isFile()){file.delete();}else if(file.isDirectory()){deleteDir(file);}}dir.delete();}private static void copyDir(File dir, File destDir) throws IOException {File[] files = dir.listFiles();for(File file:files){if(file.isFile()){File newFile = new File(destDir,file.getName());//file.renameTo(newFile); // 剪切文件copyFile(file, newFile); // 拷贝文件}else if(file.isDirectory()){File subDestDir = new File(destDir,file.getName());subDestDir.mkdir();copyDir(file,subDestDir);}}}private static void copyFile(File file, File newFile) throws IOException {FileInputStream fileInputStream = new FileInputStream(file);FileOutputStream fileOutputStream = new FileOutputStream(newFile);BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);int content = 0;while ((content = bufferedInputStream.read()) != -1) {bufferedOutputStream.write(content);}bufferedOutputStream.close();bufferedInputStream.close();}}
使用bat处理快速运行文件:
1.新建bat文件
2.输入命令行
d:
cd D:\Java\file (进入class文件所在目录,这样bat文件可以在任意位置都能执行)
java CopyDir D:\MyEclipse2016\Web\WebRoot F:\software\apache-tomcat-7.0.42\webapps\Web (改变路径只需修改参数)
3.保存文件
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
递归:
/* 递归:函数的自身调用函数的自身 (从后面结束到前面) 递归的使用前提:必须要有条件的情况下调用。 需求: 算出5的阶乘。 5! = 5*4 *3 * 2*1 */public class Demo {public static void main(String[] args) {int result = print(5);System.out.println("结果:"+ result);}public static int print(int num){if(num == 1){return 1;}else{return num*print(num-1);}}public static int test(int num){int result = 1;while(num>0){result = result*num;num--;}return result;}}/* 需求1:列出一个文件夹的子孙文件与目录。 需求2:列出指定目录中所有的子孙文件与子孙目录名,要求名称前面要有相应数量的空格:第一级前面有0个,第二级前面有1个,第三级前面有2个...,以此类推。 需求3:|--src| |--cn| | |--itcast| | | |--a_helloworld| | | | |--HelloWorld.java| | | |--b_for| | | | |--ForTest.java| | | |--c_api| | | | |--Student.java|--bin| |--cn| | |--itcast| | | |--i_exception| | | | |--ExceptionTest.class| | | |--h_linecount| | | | |--LineCounter3.class| | | | |--LineCounter2.class| | | | |--LineCounter.class|--lib| |--commons-io.jar 需求4: 删除一个非空的文件夹。 */import java.io.File;public class Demo {public static void main(String[] args) {/*File dir = new File("F:\\project\\day");listFiles3(dir,"|--");*/File dir = new File("F:\\aa");deleteDir(dir);}//删除了一个非空的目录public static void deleteDir(File dir){ // bbFile[] files = dir.listFiles(); //列出了所有的子文件for(File file : files){if(file.isFile()){file.delete();}else if(file.isDirectory()){deleteDir(file);}}dir.delete(); // 删除最后留下的空文件夹}//列出一个文件夹的子孙文件与目录,要求要是树状结构public static void listFiles3(File dir,String space){ //space 存储的是空格File[] files = dir.listFiles(); //列出所有 的子文件for(File file : files){if(file.isFile()){System.out.println(space+file.getName());}else if(file.isDirectory()){System.out.println(space+file.getName());listFiles3(file,"| "+space);}}}//列出一个文件夹的子孙文件与目录,要求名称前面要有相应数量的空格。public static void listFiles2(File dir, String space){ //space 存储的是空格File[] files = dir.listFiles(); //列出所有 的子文件for(File file : files){if(file.isFile()){System.out.println(space+file.getName());}else if(file.isDirectory()){System.out.println(space+file.getName());listFiles2(file," "+space);}}}//列出一个文件夹的子孙文件与目录。public static void listFiles1(File dir){File[] files = dir.listFiles(); //列出所有的子文件for(File file : files){if(file.isFile()){System.out.println("文件名:"+file.getName());}else if(file.isDirectory()){System.out.println("文件夹:"+file.getName());listFiles1(file);}}}}
bat处理文件:
/* 快速启动java图形化文件:(jar文件)1.进入文件目录 (cd Java)2.对java源文件进行编译:javac -d . java源文件 (javac -d . Demo.java)3.对java文件进行打包:jar cvf jar包名 java文件名 (jar cvf Text.jar aa)4.修改清单文件:Main-Class: 包名+类名 (Main-Class: aa.bb.cc.Demo) bat处理文件: bat处理文件就是可以一次性执行多个命令的文件。 为什么要学bat处理文件, 快速运行一个软件我一般都会把软件打包一个jar包。 jar双击可以运行仅对于图形化界面的软件起作用,对于控制台的程序是不起作用的。 对于控制台的程序我们可以使用bat处理文件快速启动一个项目。 如何编写bat处理文件呢? (控制台程序和图形化程序) 步骤: 编写一个自定义的文本文件,然后把后缀名改成bat即可,然后把你所要执行的命令写在bat处理文件中即可。javac -d . Demo.java(bat+源文件)java aa.bb.cc.Demopause 执行压缩包里的class文件:(找不到主类)1.设置临时环境变量(set classpath=d:\Java\text.zip)对本控制台有效2.指定类文件路径(java -classpath .\text.zip; aa.bb.cc.Demo)对本次有效(bat+zip、jar的class文件) bat处理文件常用的命令:echo 向控制台输出指定的内容echo off 隐藏echo off后面执行过的命令@ 隐藏当前行执行的命令title 改变当前控制台窗口的标题color 指定控制台的背景颜色与前景颜色%注释的内容%pause: 让当前控制台停留%1~%9: 给bat处理文件传入参数(传参只能用控制台输入参数:bat文件名 参数) */
将bat文件加载到任务栏(一键拷贝)
/* 将CopyDir.bat 改名为CopyDir.exe 将修改后的CopyDir.exe拉到任务栏 将修改后的CopyDir.exe修改回CopyDir.bat 找到C:\Users\acer\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar路径下的CopyDir.exe文件 右键点击CopyDir.exe文件--属性,将目标文件路径的后缀名exe改为bat 点击确定*/
0 0
- 通过递归来拷贝文件(使用控制台输入参数+bat处理文件快速运行)
- 使用递归拷贝文件
- 利用Bat处理文件,快速地运行java程序
- .bat文件处理adb自动安装拷贝
- 通过bat文件运行jar包程序
- bat 批处理拷贝文件
- 怎么写bat文件来运行或加载.dll 文件
- 通过递归来实现搜索文件
- bat运行java文件(含参数文件)
- Windows 控制台命令 编写简单的bat文件(从控制台获取输入的变量)
- 命令行快速进阶(二)Redirection:通过文件来输入/输出
- BAT批处理:拷贝歌词文件
- Java运行bat文件
- .bat运行jar文件
- 运行.bat文件
- 通过javaAPI来运行exe文件
- 文件快速拷贝工具FastCopy 使用教程
- 使用NIO进行快速的文件拷贝
- palindrome-number
- 分享 最全的拉丁语系名字列表,详细到了字根出处,男孩们以后别再起什么Kevin, Mike, Jack了
- 学习笔记:View的事件体系3:弹性滑动
- Selenium自动化测试工具的理论知识点
- 解决app冷启动出现ANR问题
- 通过递归来拷贝文件(使用控制台输入参数+bat处理文件快速运行)
- Java多线程中run和start方法的区别
- Java数据通讯中使用Googgle Protobuf 序列化与反序列化
- MPAndroidChart项目实战(四)——柱状图实现及X轴文字不显示问题和柱状图上显示文字
- 多态与继承的区别
- HTTP1.0和HTTP1.1的区别
- Vue.js初体验----安装
- 用ElasticSearch搭建自己的搜索和分析引擎
- 详细讲解如何在windows下搭建react-native的开发环境(包括在设备上安装和运行react-native app )!