标签:
package demo; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.channels.FileChannel; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; public class demo { private static String str = ""; private static ArrayList<String> filelist = new ArrayList<String>(); public static void main(String[] args) { String[] s = {"多年","朋友","青春"}; getFiles("E://duzhe",s); } //通过递归得到某一路径下所有的目录及其文件 public static void getFiles(String filePath,String[] s){ File root = new File(filePath); File[] files = root.listFiles(); for(File file:files){ if(file.isDirectory()){ //System.out.println("[文件夹]"+file.getAbsolutePath()); getFiles(file.getAbsolutePath(),s); }else{ System.out.println("[文件]"+file.getAbsolutePath()); //字符匹配 if(file.length() < 1024*1024*2 && file.getName().endsWith(".txt")){ str = readTxt(file); if(containstr(str,s) >=3){ System.out.println("["+file.getAbsolutePath()+"]"); copys(file); } } } } } public static int containstr(String str,String[] s){ int ts= 0; for(int i = 0; i < s.length; i++) { if (str.contains(s[i])) { ts++; //System.out.println("字符串"+s[i]+"在"+"指定字符串str中!"); } } return ts; } public static String readTxt(File file){ String str = ""; try { String encoding="GBK"; if(file.isFile() && file.exists()){ //判断文件是否存在 InputStreamReader read = new InputStreamReader(new FileInputStream(file),encoding);//考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while((lineTxt = bufferedReader.readLine()) != null){ //System.out.println(lineTxt); str += lineTxt; } read.close(); }else{ System.out.println("找不到指定的文件"); } } catch (Exception e) { System.out.println("读取文件内容出错"); e.printStackTrace(); } return str; } //拷贝文件 public static void copys(File f){ try { FileChannel in = new FileInputStream(f).getChannel(), out = new FileOutputStream("E:\\fly\\"+f.getName()).getChannel(); in.transferTo(0, in.size(), out);//简便写法 out.transferFrom(in, 0, in.size());//效果同上 } catch (FileNotFoundException e) { System.out.println("找不到文件"); } catch (IOException e) { e.printStackTrace(); } } }
通过多个关键字递归文件夹下所有层级文件是否包含,然后复制文件
标签:
原文地址:http://my.oschina.net/matol/blog/487596