0

チームがウェブログ ファイル全体を配列に解析するためのバックエンド Java プログラムを作成しています。ただし、私のコードはこの巨大なログ ファイルの一部しか取得できず、すべてのレコードは行区切り記号なしで相互に関連付けられています。ソースはネットワーク ドライブにある txt ファイルからのもので、この場合は絶対パスをパラメーターとして設定します。これが私のコードです:

public class ProcessTxt 
{
    public String[] openFile(String source)
    {
        List<String> allMatches = new ArrayList<>();
        String[] str =new String[]{};
        String pattern="^\\d+.\\d+.\\d+.\\d.*\".*?\"$";
        Pattern p=Pattern.compile(pattern);
        try 
        {
            File sourceFile = new File(source);
            // if source is a full path, java will search using that path
            // if source is just a name, java will assume its under current working directory
            Scanner scanner = new Scanner(sourceFile);
            System.out.println(scanner.hasNext()?"true":"false");//debug
            while (scanner.hasNextLine())
            {
                String line=scanner.nextLine();
                Matcher m=p.matcher(line);
                if (m.matches())
                {
                    allMatches.add(m.group());  // add entire line
                }                   
            }
            str = allMatches.toArray(new String[0]); // move to array
            scanner.close();
        } 
        catch (FileNotFoundException e)     
        {
            e.printStackTrace();
        }
        return str;
    }

    public static void main(String[] args) 
    {
        ProcessTxt pTxt=new ProcessTxt();
        String[] arr=pTxt.openFile("PATH\FOLDER\weblog.txt");
        for(String s: arr)
        {
            System.out.println(s);
        }

    }

inputstream は機能しています。正規表現がすべてのレコードをキャッチしているわけではありませんが、http://www.regexplanet.comでさらにテストしたため、コード内の正規表現がその仕事をしています。何か考えはありますか?

4

0 に答える 0