I wouldn't dare say that without some figures to back it up. Both Scanner and String.split use a java.util.regex.Pattern object. Both these pieces of code create this for each line.
It is likely though that String.split is more efficient since Scanner uses several
Pattern objects.
You are right that both are not really efficient. The Pattern can be pulled out of the loop with String.split though:
I've searched the Scanner API but there is no way to reset the Scanner with new input. Therefore, the String.split way will be the more efficient.