java 超大文件 正则,关于正则表达式:在java中传递多个文本文件以进行解析

本问题已经有最佳答案,请猛点这里访问。

我正在尝试构建一个解析器,它将从包含100个文本文件的给定路径中获取每个文件,解析每个文件并将每个文件提取的数据保存到内存中的不同文档中。 我怀疑的是如何指定Java从给定位置获取每个文本文件并解析它。 我想构建一个循环,它将检查给定路径中的所有文件夹,选择一个文本文件处理它并移动到下一个位置。

发布尝试以获得更好的帮助。您需要指出您在实施中遇到的具体问题

使用FileVisitor

我建议你将这个任务分解为几个步骤。用英语描述每一步。请注意,当您启动这样的项目时,您应该忽略您将要使用的编程语言。例如,在这种情况下,算法可能如下所示:

Get directory name from user

For each file in the directory

Open the file and parse it

当你写出这样的描述时,你经常会得到需要进一步细分的步骤。这些可以(并且应该)作为函数实现。 Get directory name from user是本例中的一个步骤,Open the file and parse it也是如此。

您应该为每个步骤重复该过程:用文字描述如何完成任务。最终,您将达到与编程语言结构几乎完全相同的级别。当您达到这一点时,您可以开始将您的描述翻译成Java或任何其他适当的编程语言。

如果在此过程中的任何时候,您遇到问题,您可以回到SO并发布一个特定的问题,包括您到目前为止所尝试的内容。另外一定要写下遇到的确切问题。您应该包含任何相关的错误消息,并描述您希望发生的事情。

使用filevisitor在这里效率很高,java.nio包提供的工具在这里,我为你编写了一个小代码。查看 :

import static java.nio.file.FileVisitResult.*;

public static class ParseFiles extends SimpleFileVisitor {

@Override

public FileVisitResult visitFile(Path file, BasicFileAttributes attr) {

if(give your condition if you want to parse file or not) {

parseFile(file) //I assumed the function to be used to parse file

}

return CONTINUE;  // It will make it to recursively search for file

}

}

现在,您只需要使用Files.walkFileTree开始解析目录中的所有文件。

ParseFiles pf = new ParseFiles();

Files.walkFileTree(basedir, pf); // basedir is String

供参考:docs。

首先,获取目录中的文件列表:

File directory = ...;

File[] files = directory.listFiles();

现在,您可以对每个文件执行某些操作:

for (File file : files) {

// do something

}

File filesDirectory = new File(directory);

File[] files; //holds files in given directory

files = filesDirectory.listFiles();

for(File file:files)

{

//Your code here parse contents of each file individually

//Ex.

if(!file.isDirectory())

{

String fileName = null;

fileName = file.getPath();

if(fileName.indexOf(".txt")

{

//read contents of each file and store in memory

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值