文件搜索小工具

package o.o.utils;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
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.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

/*
 * author:Micky
 * version:1.0.0
 * Date:2017年8月18日 下午11:46:15
 */
public class FileUtils {

	/*
	 * @parameter 指定路径filePath,指定文件名 fileName
	 * 
	 * @return 匹配文件的具体文件路径的列表
	 */
	public List
   
   
    
     containFileName(String filePath, String fileName) {
		List
    
    
     
      filePathList = new ArrayList
     
     
      
      ();
		File dir = new File(filePath);
		List
      
      
       
        files = new ArrayList
       
       
         (); if (dir.isDirectory()) { files = getterAllFiles(dir); files.stream().filter(f -> f.getName().contains(fileName)) .forEach(f -> filePathList.add(f.getAbsolutePath())); } else if (dir.isFile() && dir.getName().contains(fileName)) { filePathList.add(dir.getAbsolutePath()); } return filePathList; } /* * 递归得到指定路径下的所有文件 */ public List 
        
          getterAllFiles(File dir) { List 
         
           files = new ArrayList 
          
            (); List 
           
             childfiles = Arrays.asList(dir.listFiles()); childfiles.stream().forEach(f -> { if (f.isDirectory()) { files.addAll(getterAllFiles(f)); } else { files.add(f); } }); return files; } /* * @parameter 指定路径filePath,指定字符串specialString * * @return 包含特殊字段的文件的具体文件路径的列表 */ public List 
            
              containSpecialString(String filePath, String specialString) { List 
             
               filePathList = new ArrayList 
              
                (); File dir = new File(filePath); List 
               
                 files = new ArrayList 
                
                  (); if (dir.isDirectory()) { files = getterAllFiles(dir); files.stream().filter(f -> isContainSpecialStr(f, specialString)) .forEach(f -> filePathList.add(f.getAbsolutePath())); } else if (dir.isFile() && isContainSpecialStr(dir, specialString)) { filePathList.add(dir.getAbsolutePath()); } return filePathList; } public boolean isContainSpecialStr(File file, String str) { String strLine = ""; boolean flag = false; try { BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(new FileInputStream(file))); while ((strLine = bufferedReader.readLine()) != null) { if (strLine.contains(str)) { flag = true; } } if (bufferedReader != null) bufferedReader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return flag; } /* * @parameter 指定具体文件以及所含特殊字段 * * @return 指定字段所在文件路径及其在文件中的行数以及行具体信息的嵌套map */ public Map 
                 
                   > containSpecialStringReturnMap( String filePath, String specialString) { Map 
                  
                    > filePathMap = new HashMap<>(); File dir = new File(filePath); List 
                   
                     files = new ArrayList 
                    
                      (); if (dir.isDirectory()) { files = getterAllFiles(dir); files.stream() .filter(f -> isContainSpecialStr(f, specialString)) .forEach( f -> filePathMap.put(f.getAbsolutePath(), containSpecialStrInfo(f, specialString))); } else if (dir.isFile() && isContainSpecialStr(dir, specialString)) { filePathMap.put(dir.getAbsolutePath(), containSpecialStrInfo(dir, specialString)); } return filePathMap; } /* * @parameter 指定具体文件以及所含特殊字段 * * @return 指定字段在文件中的行数以及行具体信息的map */ public Map 
                     
                       containSpecialStrInfo(File file, String str) { Map 
                      
                        specialStrInfo = new LinkedHashMap 
                       
                         (); if (file.isDirectory()) { return specialStrInfo; } String strLine = ""; try { BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(new FileInputStream(file))); int row = 1; while ((strLine = bufferedReader.readLine()) != null) { if (strLine.contains(str)) { specialStrInfo.put(row, strLine); } row++; } if (bufferedReader != null) bufferedReader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return specialStrInfo; } } 
                        
                       
                      
                     
                    
                   
                  
                 
                
               
              
             
            
           
          
         
       
      
      
     
     
    
    
   
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值