我开始编写一小段可以分析旧式.vmg文件的脚本*。我以为开始使用扫描仪实用程序,所以我可以一开始就逐个输出消息。这就是我得到的。Java Scanner.next(),从while循环打印
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Strip {
public static void main(String[] args)
{
try
{
File file = new File("all.vmg");
Scanner sc = new Scanner(file);
// sc.useDelimiter("BEGIN:VMSG");
while (sc.hasNext())
{
String string = sc.next();
System.out.println(string);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
它编译和运行良好。虽然它不会打印出一件东西。首先我使用现在评论的分隔符。然后认为可能有问题。所以现在它只是使用它的默认空白分隔符。但是无论如何都不会打印行。我只能猜测出于某种原因,hasNext不能评估真实性。 * .vmg文件是在
BEGIN:VMSG
VERSION:1.1
X-IRMC-STATUS:
X-IRMC-BOX:INBOX
X-NOK-DT:20110224T215100Z
X-MESSAGE-TYPE:DELIVER
BEGIN:VCARD
VERSION:3.0
N:
TEL:+37999999999
END:VCARD
BEGIN:VENV
BEGIN:VBODY
Date:24.02.2008 21:51:00
Sample mobile text message
END:VBODY
END:VENV
END:VMSG
我也试着喂脚本其他几个简单的文本文件,什么也没有打印出来,一般格式的文本文件。
你试过用'hasNextLine' /'nextLine'?另外它会更容易使用'列表 lines = Files.readAllLines(Paths.get(“all.vmg”),Charset.forName(“UTF-8”));'。 –
assylias
你想要逐行读取它,还是逐个字符? – user2277872
我也尝试使用hasNextline并打印Nextline,结果是一样的。我最终想从字符串BEGIN:VSMG到BEGIN:VMSG(不是从换行符到换行符)读取它们。 –