2017-09-01 101 views
1

我有一個JSON文件,它看起來像這樣的具體順序:從文件中讀取到的字符

{ 
    "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(); 

輸出只給我:

"id": 25, 
"date": "Aug 28, 2017 12:14:28 PM", 

我沒有json部分的開始{也沒有整個json消息"isOpen","message" ...

我該如何讀取並將結果存儲爲直到評論部分?

+0

在這裏你去。我編輯了我的答案,以使用stringbuilder(用於性能),告訴我如果你不能使用它,我會恢復它。 – Nathan

回答

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! 

你不應該把它叫做第二次 - 直接與com比較你currentLine

嘗試:

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());