2016-02-07 55 views
1

我一直在嘗試將我的C++代碼轉換爲Java,而且我特別在文件輸入上卡住了。java.io.FileNotFoundException。試圖通過參數[0]

String inputfilename = args[0]; 
    Scanner infile = new Scanner (new FileInputStream(inputfilename)); 

這不斷給我一個java.io.FileNotFoundException錯誤。我試圖在「StackData.txt」中傳遞的文件已正確放入命令行參數中。我已經把它放在根目錄和項目\ src \文件夾中,而且都不適合我。我試圖命名查找inputfilename字符串,不喜歡 -

String inputfilename = "StackData.txt"; 
Scanner infile = new Scanner (new FileInputStream(inputfilename)); 

而且似乎沒有任何工作。也不試圖將目錄路徑放入字符串名稱中。我在某處做了一個真正的少年錯誤嗎?

我使用

File infile = new File(args[0]); 

以及嘗試,但如果我嘗試使用的方法爲我而循環

while (infile.hasNextInt()){ blah blah 
} 

它說的方法解決不了的,這是我想通手段使用我必須用FileInputStream啓動文件的hasNextInt()方法。

回答

1

每個java jvm都有一個工作路徑。通常從jvm開始的地方是一樣的。但你總是可以改變這一點。

您的IDE有默認的工作路徑集。根據您的IDE,這可以在啓動選項中進行更改。

要了解當前的工作路徑,你可以只打印的絕對路徑到當前目錄:如果您使用相對路徑

public static void main(String[] args) { 
    System.out.println(new File(".").getAbsolutePath()); 
} 

你應該把你的文件這個文件夾中。

如何使用絕對路徑不應該拋出任何FNF異常。


要使用掃描儀,你可以用這個例子:

try { 
     Scanner s = new Scanner(new FileInputStream("text.xml")); 

     while (s.hasNextInt()){ 
     // bla bla 
     } 
    } catch (FileNotFoundException e) { 
     // Please handle this exception ;) 
     e.printStackTrace(); 
    } 

請注意,您嘗試將File對象不具有這樣的方法上調用hasNextInt()。您必須在Scanner對象上調用它。在文件

+0

嗯。我想我會通過嘗試並抓住代碼來修復它。沒有嘗試打開文件是不可能的? – user2444400

+0

對不起,我無法關注你。請問每個問題一個問題。掃描器拋出一個FileNotFoundException,你必須捕捉這個,但錯誤會不同於那個 – Marcinek

1

簡單的代碼使用相應

BufferedReader br = null; 

    try { 

     String sCurrentLine; 

     br = new BufferedReader(new FileReader("C:\\testing.txt")); 

     while ((sCurrentLine = br.readLine()) != null) { 
      System.out.println(sCurrentLine); 
     }