从控制台输入项目路径输出java到本地txt
来源:互联网 发布:淘宝收藏修改分类 编辑:程序博客网 时间:2024/04/28 06:27
package com.bigdata.financial.xsbassessment.test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.Scanner;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * @author 通过控制台输入项目文件路径,实现java文件的复制 * */public class CopyManyJavaFileToTxt { private static ArrayList<String> filelist = new ArrayList<String>(); public static void main(String[] args) { String pathstr = inputPorjectPath(); if(checkPath(pathstr)){ List<String> list= getFiles(filePathProcess(pathstr)); for(String lis:list){ if(BufferedReaderAndBufferedWriter(lis,"D:\\abc.txt")){ System.out.println("文件写出成功"); }else{ System.out.println("文件写出失败"); }; } }else{ inputPorjectPath(); }; } public static Boolean checkPath(String path){ boolean flag = false; while(!flag){ System.out.println("确认正确输入Y/y,取消输入N/n"); String YesOrNo = inputYesOrNo(); if(YesOrNo.equalsIgnoreCase("y")){ if(filePathProcess(path).equalsIgnoreCase("no")){ flag = false; }else{ flag = true; }; }else if(YesOrNo.equalsIgnoreCase("n")){ inputPorjectPath(); }else{ System.out.println("不支持的操作"); checkPath(path); } } return flag; } public static String inputYesOrNo(){ Scanner input = new Scanner(System.in); return input.nextLine(); } public static String inputPorjectPath(){ System.out.println("请输入你要copy的Java项目文件路径,并定位到//src目录:形如:E://Workspaces//MyEclipse//bigdata_financial_xsbassessment1.0//src"); Scanner input = new Scanner(System.in); String str = input.nextLine(); System.out.println("你输入的路径是:"+str+"请检查输入项目路径正确"); return str; }; public static String filePathProcess(String pathstr){ pathstr=pathstr.replaceAll("\\\\","\\//").trim(); Pattern p = Pattern.compile("(^//.|^/|^[a-zA-Z])?:?/.+(/$)?"); Matcher m = p.matcher(pathstr); if(!m.matches()){ System.out.println("文件输入内容不正确,请输入N/n进行取消,重新输入"); return "no"; }else{ return pathstr; } } /** * 通过递归得到某一路径下所有的目录及其文件 */ public static List<String> getFiles(String filePath){ File root = new File(filePath); File[] files = root.listFiles(); for(File file:files){ if(file.isDirectory()){ getFiles(file.getAbsolutePath());//递归调用(如果继续是目录的话) }else{ if(file.getAbsolutePath().endsWith(".java")){ filelist.add(file.getAbsolutePath());//将文件放入到集合里面 } } } return filelist; } /** * * @param inputFilePath * @param outputFilePath "D:\\abc.txt" * @return */ public static Boolean BufferedReaderAndBufferedWriter(String inputFilePath,String outputFilePath){ BufferedReader br = null; BufferedWriter bw = null; File file = null;//输出路径 try { file = new File(outputFilePath); if (!file.exists() != false) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } //输出路径检查 br = new BufferedReader(new InputStreamReader(new FileInputStream(inputFilePath), "UTF-8"));//读取文件 bw = new BufferedWriter(new FileWriter(file,true));//多个文件添加到一个文件不覆盖(FileWriter里面两个参数,第二个 参数设置为true,如果覆盖的话没有第二个参数,或者将第二个参数设置为false); String tempString = null; while ((tempString = br.readLine()) != null) { bw.write(tempString);//输出字符串 bw.newLine();//换行 bw.flush(); } return true; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if(bw!= null){ try{ bw.close(); }catch(IOException e){ e.printStackTrace(); } } } return false; }}
阅读全文
0 0
- 从控制台输入项目路径输出java到本地txt
- 从txt里面读文件并逐行输出到控制台
- Java控制台输入,输出!
- java从控制台输入
- java从控制台输入
- Java 控制台输入,输出语句
- 输出日志到控制台和文件(Java项目)
- Android 日志输出到本地txt
- android 输出信息到本地txt文本
- Android 日志输出到本地txt
- java控制台输入cmd命令, ssh远程linux shell命令, 并打印命令输出到控制台
- java 从控制台输入密码
- JAVA-从控制台输入数据
- 【java】从控制台获取输入
- java从控制台获得输入
- 从控制台获取输入-Java
- Java从控制台输入数据
- java学习笔记#从控制台输入整数,输出最大最小值,直到输入0结束
- 《深入理解java虚拟机》学习笔记8——Tomcat类加载器体系结构
- RHEL7 切换字符编码为GBK
- 快速搭建多终端同步的 github + hexo 静态博客
- Mongo修改数据类型
- php数据类型
- 从控制台输入项目路径输出java到本地txt
- Android MVP架构思考初稿
- 人脸检测之基于Opencv和MFC创作的换脸小程序
- Vue.js 2.0 有时双向绑定img src属性失败问题
- tomcat设置https端口时,8443和443区别:
- Jquery消息提示插件toastr
- Markdown语法简记
- mysql服务端安装错误3534
- 对static变量的解析