标签:
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