我有一个文本文件,其中包含从网页上抓取的内容。文本文件的结构如下:
|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/