2017-11-11 84 views
-1
String fileName = "MSFT.csv"; 
    File file = new File(fileName); 
    try{ 
     Scanner inputStream = new Scanner(file); 
     while(inputStream.hasNext()){ 
      String data = inputStream.next(); 
      System.out.println(data); 
     } 
     inputStream.close(); 
    } 
    catch(FileNotFoundException e){ 
     e.printStackTrace(); 

我試圖從csv文件中讀取,當我運行此代碼,以確保該文件是正確讀取所有逗號分隔的數據正確顯示,但第一行除外。正在輸出文件的第一行,每個單詞位於不同的行上。我在初次閱讀文件時做了什麼錯誤?讀取數據時,我的文件打開正確但該文件被讀錯

我輸出的例子去爲: 時間戳, 接近, 高, 低, 開放, 值, 9:30,57.515,57.57,57.47,57.515,31120 現在所有的我的話在這種情況下,在Excel文件中的同一行上,但是當我運行時間戳,關閉,高等等都出現在不同的行,所以我不知道爲什麼它看起來像這樣。

+0

有一個CSV閱讀器庫。在這種情況下,首先執行'hasNextLine()'。 –

+0

不太確定你的意思,用hasNextLine()替換我的hasNext()? –

回答

0

掃描儀hasNext定義如下:

hasNext()如果此掃描器的輸入中有另一個標記,則返回真。

所以,當你使用它時,你正在通過令牌讀取你的csv文件令牌,而不是逐行。除此之外,使用掃描儀接下來執行以下操作:

next()從此掃描程序中查找並返回下一個完整標記。

,最後用System.out.println打印您的數據,這就是爲什麼它一直outputing每個令牌後,要到下一行後,將插入一個行分隔符。

如下更改您的代碼,並預期它應該工作:

String fileName = "MSFT.csv"; 
File file = new File(fileName); 
try{ 
    Scanner inputStream = new Scanner(file); 
    while(inputStream.hasNextLine()){ 
     String data = inputStream.nextLine(); 
     System.out.println(data); 
    } 
    inputStream.close(); 
} catch(FileNotFoundException e){ 
    e.printStackTrace(); 
+0

非常完美,非常感謝。 –

+0

非常歡迎:) – alainlompo