This is because String.split accepts a regular expression, not a literal string. You must exit ^ , since it has a different meaning in the regular expression (anchor at the beginning of the line). This way, the split will actually be done before the first character, giving you the full line back unchanged.
You avoid the regular expression metacharacter with \ , which should be \\ in Java strings, so
data.split("\\^")
must work.
source share