我有一个JSON文件,如下所示:
map(attributes => Person(attributes(0), attributes(1).trim.toLong))
我想要做的是能够从文件中读取,直到它检测到评论部分的开头“/*”。
我能够编写一些代码,但由于某些原因,输出似乎不正常:
{
"id":25,
"type":0,
"date":"Aug 28, 2017 12:14:28 PM",
"isOpen":true,
"message":"test"
}
/*
some lines here, comment, not json
*/
输出只给我这个:
BufferedReader br = null;
FileReader fr = null;
String comm = "/*";
fr=new FileReader(FILENAME);
br=new BufferedReader(fr);
String currentLine;
while((currentLine=br.readLine())!=null&&!(currentLine=br.readLine()).equals(comm))
{
System.out.println(sCurrentLine);
}
br.close();
我没有json部分"id": 25,
"date": "Aug 28, 2017 12:14:28 PM",
的开头,也没有整个json消息{
,"isOpen"
......
如何读取结果并将结果存储在字符串中直到评论部分?
答案 0 :(得分:2)
您正在调用两次currentLine = br.readLine()
,因此请阅读两行。这是人们使用时遇到的同样问题
Scanner sc = new Scanner(System.in);
if (sc.nextLine() != null) // This reads a line
myString = sc.nextLine(); //This reads the next line!
您不应该第二次调用它 - 直接将您的currentLine
与com
进行比较。
尝试:
String comm = "/*";
BufferedReader br = new BufferedReader(new FileReader(FILENAME););
StringBuilder sb = new StringBuilder();
String currentLine;
while ((currentLine = br.readLine()) != null && !(currentLine.equals(comm)) {
//System.out.println(currentLine);
sb.append(currentLine);
sb.append("\n");
}
br.close();
System.out.println(sb.toString());
如果你想使用Scanner,那就像是:
StringBuilder sb = new StringBuilder();
Scanner sc = new Scanner(FILENAME);
while (sc.hasNext())
sb.append(sc.next());
System.out.println(sb.toString());