用Java读/写文件

Twe*_*eet 2 java file-io parsing

如果我有以下文件格式,如何用Java轻松读取文件:

a|dip
a|dop
c|nap
a|dip
b|dop
b|sip
a|tang
c|dig
c|nap
Run Code Online (Sandbox Code Playgroud)

我想得到属于"a","b"和"c"的所有单词.我可以用什么数据结构来读取和存储这些信息?

您还可以建议一些易于在Java中读/写的良好文件格式(两列).

我知道有些人可能会想到我想要解决的真正问题是什么,我有一些复杂的员工相关数据.当前(差)系统生成一些文件,我正在尝试处理它们以将它们添加到数据库中.当前文件的格式有点复杂(私有),我无法复制过去.

Dav*_*Man 6

如果您可以使用Google Guava(http://code.google.com/p/guava-libraries/),那么您将获得一些方便的课程(您可以使用其中的部分或全部):

  1. com.google.common.io.Files
  2. com.google.common.io.LineProcessor<T>
  3. com.google.common.base.Charsets
  4. com.google.common.collect.Multimap<K,V>
  5. com.google.common.collect.ArrayListMultimap<K,V>

例如,您可以写:

LineProcessor<Multimap<String, String>> processor = 
    new LineProcessor<Multimap<String, String>>() {
      Multimap<String, String> processed = ArrayListMultimap.create();

      public boolean processLine(String line) {
        String parts[] = line.split("\\|", 2); // 2 keeps any | in the rest of the line
        processed.put(parts[0], parts[1]);
        return true; // keep going
      }

      public Multimap<String, String> getResult() {
        return processed;
      }
    };

Multimap<String, String> result = Files.readLines(
    new File("filename.txt"), Charsets.UTF_8, processor);
Run Code Online (Sandbox Code Playgroud)