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