Это потому, что String.split использует regex .
В регулярных выражениях символ |
является специальным символом, означающим either the pattern on the left OR on the right
персонажа. \\
)
Правильный синтаксис:
String[] fields = line.split("\\|");
Кроме того, не делайте этого, чтобы я не видел проблему с но это требует исправления, поэтому ArrayOutOfBoundsException
выталкивает свою уродливую голову ...