java - 使用 Java 读取和处理带有自定义列和行分隔符的文本文件

标签 java string text text-files

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

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

|换行|指示新行的开始(即数据中的新行) |新标签|指示一行中新字段的开始(即数据中的新列)

我需要将文本文件拆分为字段和行,并存储在数组或其他一些数据结构中。 |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/

相关文章:

Java应用程序启动一个进程并在进程中发生事件时获取回调

java - 如何将 java webstart 与 RMI 混合使用?

python - 修改正则表达式

python - 查找 pandas.Series 中的所有非数字元素

sql-server - SQL Server函数在列中显示词频

python - 在特定位置更新文本文件中的字符串

java - 已经使用 springSecurityFilterChain 构建了异常

c - C 语言中的replaceString()函数

ios - UITextField 内可滚动但不可编辑

java - 使用 Apache VFS2 复制文件夹导致错误由 : org. apache.commons.vfs2.FileSystemException 引起:期望/遵循 URI 中的主机名