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