Java 从文件夹中读取所有日志文件

Java 从文件夹中读取所有日志文件,java,Java,我想从文件夹中读取所有日志文件。我现在正在读一个文件。我已将日志文件的路径设置为String dir。我还列出了一些与getExternalServiceException做的事情大致相同的异常。如何使用for loop或for each loop从D:\\logs读取所有日志文件 警报-我需要使用Java v1.6 public class CallingCheck { public void getExternalServiceException(String sPath) {

我想从文件夹中读取所有日志文件。我现在正在读一个文件。我已将日志文件的路径设置为
String dir
。我还列出了一些与
getExternalServiceException
做的事情大致相同的异常。如何使用
for loop
for each loop
D:\\logs
读取所有日志文件

警报-我需要使用Java v1.6

public class CallingCheck 
{


    public void getExternalServiceException(String sPath) {
        BufferedReader br = null;
        try {
            File f = new File(sPath);
            if(f.isFile())
            {

            FileInputStream fis = new FileInputStream(sPath);
            DataInputStream dis = new DataInputStream(fis);
            br = new BufferedReader(new InputStreamReader(dis));
            String strLine;

            String sPattern = "at (.*)\\.(.*)\\(([^:]*):?([\\d]*)\\)";

            Pattern p = Pattern.compile(sPattern);

            boolean bFlag = false;
             int  iCount = 0;
             int totCount = 0;
            int exCount = 0;


            while ((strLine = br.readLine()) != null) {

                if((strLine.contains("com.shop.integration.exception.ExternalServiceException")))
                        //
                {   exCount++;
                    bFlag = true;

                }
                if(bFlag){

                    if((strLine.contains("** Error"))){


                    Matcher m = p.matcher(strLine);
                    if(m.find()){
                        totCount++;
                        iCount++;

                    if(iCount==1){
                        System.out.println("Class name:- " + m.group(3));
                        System.out.println("Line Number:- " + m.group(4));
                        System.out.println("ExternalServiceException occurence count: " + exCount);

                        System.out.println("ExternalServiceException stack trace count: " + totCount);

                    }
                    if(strLine.contains("at")){
                        String sTemp[] = strLine.split("\\s+at+\\s+");

                        strLine = sTemp[1];
                        strLine = "at   "+strLine;
                    }
                    System.out.println(strLine);


                    if(iCount == 5){
                        bFlag = false;  
                        iCount=0;
                    }

                    }
                }

            }
            }}}
         catch (Exception e) {
            System.out.println(e.getMessage());
        }finally{
            try{
            if(br != null){
                br.close();
            }
            }catch(Exception e){
                System.out.println(e.getMessage());
            }
        }
    }

    public static void main(String[] args)
    {
        String dir= "D:\\logs\\readLogFiles.txt";

        CallingCheck check = new CallingCheck();
        check.getExternalServiceException(dir);


    }


}
您可以使用:

使用lambda(Java 8)更酷:

File[] fileList = new File(directory).listFiles((dir, name) -> {
    return true; // we simply want all the files in this directory
});

这段代码应该做到以下几点:

public static void main(String[] args)
{
    File inputFolder = new File("your_directory_here");
    for(File inputFile : inputFolder.listFiles())
    {
        // ignore files that aren't log files
        if(!f.getName().endsWith("log"))
            continue;

        // call a separate method to deal with each file
        processFile(inputFile);
    }
}

private static void processFile(File logFile)
{
    // enter your logic here
}

您可以使用以下代码获取文件夹中的所有文件

File folder = new File("/Users/you/folder/");
File[] listOfFiles = folder.listFiles();

for (File file : listOfFiles) {
if (file.isFile()) {
    System.out.println(file.getName());
}
}

这将为我提供文件夹中的文件列表。我也想读所有这些文件。如果我将路径用作
File
对象,那么如何传递
dir
路径,该路径位于
main
方法中。
File folder = new File("/Users/you/folder/");
File[] listOfFiles = folder.listFiles();

for (File file : listOfFiles) {
if (file.isFile()) {
    System.out.println(file.getName());
}
}