我有一个文本文件,其中包含从网页抓取的内容。文本文件的结构如下:

| NEWTAB | lkfalskdjlskjdflsj | NEWTAB | lkjsldkjslkdjf | NEWTAB | sdlfkjsldkjf | NEWLINE | lksjlkjsdl | NEWTAB | lkjlkjlkj | NEWTAB | sdkjlkjsld

| NEWLINE |指示新行的开始(即数据中的新行)
| NEWTAB |指示一行中新字段的开始(即数据中的新列)

我需要将文本文件分为字段和行,并存储在数组或其他数据结构中。 | NEWLINE |之间的内容字符串可能包含实际的新行(即\ n),但这些行并不表示数据中的实际新行。

我首先逐个读取每个字符,然后查看8个连续字符的集合,看它们是否包含| NEWTAB |。我的方法被证明是不可靠和丑陋的。我正在寻找最佳实践。最好的方法是将整个文本文件读取为单个字符串,然后在“ | NEWLINE |”上使用分割的字符串然后使用“ | NEWTAB |”将字符串拆分为结果字符串?

非常感谢!

最佳答案

我认为其他答案也可以,但是我的解决方案如下:

FileReader inputStream = null;
StringBuilder builder = new StringBuilder();

try {
    inputStream = new FileReader(args[0]);
    int c;
    char d;

    while ((c = inputStream.read()) != -1) {
        d = (char)c;
        builder.append(d);
    }
}

finally {
    if (inputStream != null) {
        inputStream.close();
    }
}

String myString = builder.toString();

String rows[] = myString.split("\\|NEWLINE\\|");

for (String row : rows) {
    String cols[] = row.split("\\|NEWTAB\\|");

    /* do something with cols - e.g., store */
}

关于java - 使用Java读取和处理带有自定义列和行分隔符的文本文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8332267/

10-10 07:07