我有一个很大的文本。 (字典)文件,其中包含大约100k +这样的单词:
树木asderi 12
车载汽车asdfei 123小鼠鼠标dasrkfi 333
板块asdegvi 333
...
(ps。中间没有空行)
我想要做的是检查第3列(在第一行的asderi)以及是否有字母" i"和" e"在这个单词中,然后将此行中的第一个单词(在本例中为树)复制到新的txt。文件。我不需要一个完整的解决方案,但可能和例子如何阅读第3个单词并检查字母,如果它们为TRUE,则打印出该行中的第一个单词。
答案 0 :(得分:2)
当涉及到大数据文件时,你想逐行处理而不是将所有文件都读到你的内存中,你可能想从这开始逐行处理文件:
BufferedReader br = new BufferedReader(new FileReader(new File("C:/sample/sample.txt")));
String line;
while ((line = br.readLine()) != null) {
// process the line.
}
br.close();
一旦你有了我敢打赌的那条线你将能够使用常见的String方法,如.indexOf(..,.substring(...,。split)来获取你想要的数据(特别是因为源文件似乎拥有结构良好的数据。)
所以假设你的“列”总是被一个空格分隔,并且在一个包含空格的列中永远不会有一个单词,也不会丢失任何列,你可以使用.split来捕获列,如下所示:
// this will be the current line of the file
String s = "tree trees asderi 12";
String[] fragments = s.split(" ");
String thirdColumn = fragments[2];
boolean hasI = thirdColumn.contains("i");
String firstColumn = fragments[0];
System.out.println("Fragment: "+thirdColumn+" contains i: "+hasI+" thats why i want the first fragment: "+firstColumn);
但是最后你将不得不尝试一下并使用String-methods将它们组合在一起,特别是对于这个文件可能带来的所有特殊情况;)
您可以使用此提示设置的某些来源更新您的“问题”,然后再次询问您是否遇到问题。