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());
}
}