我正在为团队编写一个后端 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上做了进一步测试,代码中的正则表达式完成了它的工作。任何想法 ?