在文本文件中搜索特定字符串

时间:2014-01-08 03:32:40

标签: java parsing io text-files

我目前正在开发一个java应用程序,它将从特定文件夹中读取文本文件的内容。该应用程序已经能够读取文本文件的内容,但是,文本文件是服务器日志,我只需要从其内容中获取数据,例如错误名称,时间,日期等。有关如何执行此操作的任何想法,或者可以帮助我的功能?

为了更好地查看,这是我的代码。

public class ListFiles {

    public static void main(String[] args) throws FileNotFoundException,
            IOException {

        // Directory path here
        String path = "C:/Users/Pasusani/Desktop/logs";

        String files;
        File folder = new File(path);
        File[] listOfFiles = folder.listFiles();

        for (int i = 0; i < listOfFiles.length; i++) {

            if (listOfFiles[i].isFile()) {
                files = listOfFiles[i].getName();
                if (files.endsWith(".txt") || files.endsWith(".TXT")) {
                    if (listOfFiles[i].getName().equals("R320-txtfile.txt")) {
                        JOptionPane.showMessageDialog(null, listOfFiles[i]
                                .getName().toString());

                        String paths = "C:/Users/Pasusani/Desktop/logs/"
                                + listOfFiles[i].getName().toString();
                        FileReader file = new FileReader(paths);
                        BufferedReader reader = new BufferedReader(file);

                        String text = "";
                        String line = reader.readLine();
                        while (line != null) {
                            text += line;
                            line = reader.readLine();
                        }
                        System.out.println(text);
                        JTextArea ta = new JTextArea();
                        ta.setVisible(true);
                        ta.setText(text);

                    } else if (listOfFiles[i].getName().equals("try.txt")) {
                        String paths = "C:/Users/Pasusani/Desktop/logs/"
                                + listOfFiles[i].getName().toString();
                        FileReader file = new FileReader(paths);
                        BufferedReader reader = new BufferedReader(file);

                        String text = "";
                        String line = reader.readLine();
                        while (line != null) {
                            text += line;
                            line = reader.readLine();
                        }
                        System.out.println(text);
                        JTextArea ta = new JTextArea();
                        ta.setVisible(true);
                        ta.setText(text);

                    }

                    else {
                        JOptionPane.showMessageDialog(null, "hah");
                    }

                    // System.out.println(files);
                } else {
                    JOptionPane.showMessageDialog(null, "wala lang");
                }
            }
        }
    }

}

1 个答案:

答案 0 :(得分:0)

我认为您的程序可以在JTextArea中成功输出日志,对吗?

您需要根据日志文件的结构添加语句来处理从Bufferreader获取的文本。如果不了解您的日志文件,我们无法帮助您。

您可能需要使用String的contains(String str),substring(int beginIndex,int endIndex)和indexOf(String str)。一个简单的样本:

    public static String testMethod(){

    String a = "hello error";
    if(a.contains("error"))
        return a.substring(a.indexOf("error"), a.indexOf("error")+5);
    else
        return "not found";
}