Hi all,
I want to implement search on file contents for keywords using struts. Presently, I am reading the file contents line by line and checking for the occurrence of the keywords. Below is the code I use for searching a file. br = new BufferedReader(new FileReader(file)); while ((line = br.readLine() )!=null){ line = line.toLowerCase(); for (int i=0; i<keyword.length; i++){ if (line.indexOf(keyword[i]) != -1 ){ containsKeyword = true; System.out.println("\t"+file.getName() + " - selected." ); System.out.println("\t\t"+line ); return containsKeyword; } } } This is the easiest idea that stuck me first but I'm worried about its efficiency as this function will be called once for every file and there are many files in the search location. And to locate the files I traverse the directories recursively till I find all the files. Even this works pretty slowly for huge directory structures. I'm pasting the code below: public ArrayList getFileList(String dir, String keywords){ System.out.println(dir); try { File file = null; if(dir !=null){ file= new File(dir); } FilenameFilter filter = new FileFilter(); File[] list = file.listFiles(filter); if(list != null) { for(int loopCount = 0;loopCount < list.length;loopCount++) { String fileName = list[loopCount].getName(); if(list[loopCount].isFile()) { /*Search*/ if (isPresent(keywords, list[loopCount])){ LabelValueBean bean = new LabelValueBean(fileName/*.substring(0,fileName.indexOf("."))*/,list[loop Count].getAbsolutePath()); fileList.add(bean); } } else { this.getFileList(list[loopCount].getAbsolutePath(), keywords); } } } } catch(Exception ioe) { d_log.error("SearchImpl.java : IO Exception while getting list of directories or files." , ioe); } return fileList; } Please let me know if there's a better way to implement this function. Thanks, Saranya **************** CAUTION - Disclaimer ***************** This e-mail contains PRIVILEGED AND CONFIDENTIAL INFORMATION intended solely for the use of the addressee(s). If you are not the intended recipient, please notify the sender by e-mail and delete the original message. Further, you are not to copy, disclose, or distribute this e-mail or its contents to any other person and any such actions are unlawful. This e-mail may contain viruses. Infosys has taken every reasonable precaution to minimize this risk, but is not liable for any damage you may sustain as a result of any virus in this e-mail. You should carry out your own virus checks before opening the e-mail or attachment. Infosys reserves the right to monitor and review the content of all messages sent to or from this e-mail address. Messages sent to or from this e-mail address may be stored on the Infosys e-mail system. ***INFOSYS******** End of Disclaimer ********INFOSYS***