2016-05-14 81 views
-1

看到我以前的帖子感覺很可恥。我認爲文本文件是相同的。對於誰在尋找相同的問題,我試圖編輯我的問題更具體和簡潔。相同的文本文件,但掃描儀無法閱讀其中的一個

  • input.txt | 大小:1字節| 內容:-2 | 由我自己創建
  • input(2).txt | 大小:4字節| 內容:-2 | 從線上解題系統下載

可能出現的問題

  1. 文件的編碼錯誤引起的錯誤
  2. '-2' 被解釋爲字符串,並出現錯誤

====

我有兩個文本文件,分別命名爲input.txtbattery_input.txt。兩者都包含完全相同的東西,即整數 - 2.它們之間的唯一區別是input.txt的大小是1個字節,而battery_input.txt是4個字節。我將它們都放在工作目錄中,並且在生成它們時存在File實例。但是,Scanner無法從battery_input.txt讀取Integer。以下是代碼;它打印ERR

import java.util.Scanner; 
import java.io.File; 
public class Scanner_input{ 

    public static void main(String[] args) throws Exception{ 
     File inputFile = new File("battery_input.txt"); 
     Scanner sc = new Scanner(inputFile); 
     System.out.println("Current Directory = "+System.getProperty("user.dir")); 
     if(sc.hasNextInt()) { 
      int num = sc.nextInt(); 
      System.out.println(num); 
     } else { 
      System.out.println("ERR!"); 
     } 
     sc.close(); 
    } 

} 

沒有if語句,它打印下面給出的錯誤信息:在線程

異常在 java.util.Scanner.throwFor(來源不明) 「主」 java.util.NoSuchElementException在 java.util.Scanner.next(未知來源)在處 Scanner_input.main java.util.Scanner.nextInt(未知來源) java.util.Scanner.nextInt(未知源)(Scanner_input.java:10)

+1

'battery_input.txt'中包含了什麼?我的意思是你可以發佈它嗎? – Mohit

+0

您需要提供文件的絕對路徑 – emotionlessbananas

+1

[使用Java中的Scanner類讀取.txt文件]的可能重複(http://stackoverflow.com/questions/13185727/reading-a-txt-file-using-scanner -class-in-java) – emotionlessbananas

回答

0

既然你提到了一個文件是1米字節長度,另一個是4個字節,我懷疑是更大的文件是UTF-8編碼。
試試這個 - Scanner sc = new Scanner(inputFile,"utf-8");來定義輸入爲UTF-8編碼。

+0

我試過了,但失敗了。錯誤消息說沒有這樣的文件。但我認爲這是解決問題的關鍵。謝謝!! – pty115

0

試試這個

File file = new File("F://fileIO/baseFile.txt"); //absolute path of file 
     if (file.exists()) { 
      Scanner sc = new Scanner(file); 
      while (sc.hasNextLine()) { 
       System.out.println(sc.nextLine()); 
      } 
     } else { 
      System.out.println("file not found"); 
     } 
+0

我檢查它生成正確的文件實例。我也檢查了文件出口。但掃描儀無法讀取整數...我認爲這是由於不正確的編碼。感謝評論! – pty115