2017-04-20 55 views
-1

在我開始之前,我想說我已經花了4小時今天,昨天6小時,並在研究這個問題前3小時。我已經閱讀了我可以找到的每一篇文章,按照該信的每條說明,重新啓動了我的項目,重新安裝了我的IDE(Netbeans),甚至新安裝了我的操作系統,但我還沒有找到一條有用的建議,所以我想我需要尋求幫助。Java:沒有什麼會在這個文件中讀取

是的,我把文件放在正確的位置 ...事實上,我已經把文件放到了每個位置。在我的項目中的每個文件夾中都有一個副本,並且還在整個Projects文件夾中以及我的文檔中都有一個副本。我已經檢查並更改並多次默認根目錄。請不要告訴我只使用異常處理程序。程序讀入的文件保證存在幷包含某些內容。

所以這裏是我的問題: 我想輸入並從文件中讀取,但是,結果總是找不到文件。下面是我的代碼示例(它確實是到該ATM):

​​

這裏有兩個我得到的錯誤(我也得到Filenotfound錯誤,但我不認爲我需要補充的是):

Exception in thread "main" java.lang.RuntimeException: Uncompilable source 
code - unreported exception java.io.FileNotFoundException; must be caught or 
declared to be thrown 
    at project2.Project2.main(Project2.java:14) 
C:\Users\jarre\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: 
Java returned: 1 
BUILD FAILED (total time: 1 second) 

Exception in thread "main" java.util.NoSuchElementException: No line found 
    at java.util.Scanner.nextLine(Scanner.java:1540) 
    at project2.Project2.main(Project2.java:24) 
C:\Users\jarre\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: 
Java returned: 1 
BUILD FAILED (total time: 0 seconds) 

就是這樣。文件名來源於參數,我嘗試了每個可能的名稱變體。我已經嘗試在參數外面命名文件,如文件名本身以及顯式文件路徑。

使用掃描儀不會讓我讀任何東西。FileReader甚至不會運行。

該文本文件沒有特殊的格式或字符,我使用了我提供的一個和多個我手工輸入的,以防萬一遇到我提供的問題。我也確保「.txt」永遠不會被讀取或使用過兩次(無論如何,我都會保留我的擴展名)。 我已經檢查過所有文件和Netbeans程序本身的屬性和權限。我還確保文本文件包含在項目構建中。

我現在沒有使用任何其他代碼,因爲我無法做任何事情,直到我確信我可以讀取文件,然後輸出一個。我也知道文本文件沒有損壞,因爲我可以在Python中閱讀它們,但是,我必須使用Java並且必須使用Netbeans。

這對我來說是一個新問題,我一直能夠很好地閱讀文件,並且我已經用盡了我的選項。如果有人有任何想法,我真的需要一些幫助。

+1

'FileNotFoundException'意味着什麼它說。在嘗試訪問該文件之前,打印完全限定路徑並驗證該文件是否正在嘗試讀取它的文件_actually_,因爲顯然它不是。 '文件f =新文件(args [0]); System.out.println(f.getAbsolutePath());' –

+0

已經完成了。我正在使用的路徑與正確的文件一起顯示。我的意思是,當我說我把文件的副本放在每個文件夾和子文件夾中時,以防萬一。 – Jarbcd

+0

請分享您用來調用您的應用程序的命令,以及我上述請求的輸出。路徑是否有空格?特殊字符?你有適當的特權去尋找這個位置? –

回答

0

這讀取沒有問題的文件。我假設你正在運行JDK 8

/** 
* Read a file example 
* User: mduffy 
* Date: 4/21/2017 
* Time: 7:48 AM 
* @link http://stackoverflow.com/questions/43529600/java-nothing-will-read-in-this-file 
*/ 

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 

public class Project2 { 
    public static void main(String[] args) { 
     if (args.length > 0) { 
      BufferedReader reader = null; 
      try (BufferedReader bufferedReader = new BufferedReader(new FileReader(args[0]))) { 
       bufferedReader.lines().forEach(System.out::println); 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } else { 
      System.out.println("Usage: Project2 <file>"); 
     } 
    } 
} 

這是我使用的輸入文件:

line1 
line2 
hello, michael 
line 4 

這是我得到的輸出:

java Project2 .\src\main\resources\test.txt 
line1 
line2 
hello, michael 
line 4 

Process finished with exit code 0 
0

我不認爲Java會與您混淆一個未找到的文件是一個未找到的文件,請在屏幕上對您正在處理的文件和目錄進行詳細說明。

我想你考慮看看以下內容:

  1. FileReader
  2. Path of projects on Netbeans

我希望這有助於可能的代碼與你同在。

+0

我欣賞輸入。該文件存在於每個可能的子文件夾中,所以沒有辦法像「它不在那裏」那樣簡單。恐怕我現在不在,但當我回來時,我會分享我的意思。 – Jarbcd

+0

好的,一旦你得到截圖,請在這裏留言,這樣我就可以得到通知。 –

2

第一個異常(java.lang.RuntimeException: Uncompilable source code)被拋出,因爲您向我們顯示的代碼是無效的java源代碼。

new FileReader(args[0])被聲明爲投擲FileNotFoundException並根據java語言的規則,您必須捕獲此異常或聲明您的主要方法爲拋出此異常。解決這個問題

一種方法是寫你這樣的主要方法:

public static void main(String[] args) throws FileNotFoundException { 
    FileReader inputFile = new FileReader(args[0]); 
} 

看來你已經解決了這個問題,因爲第二個例外(java.util.NoSuchElementException: No line found)由Scanner.nextLine()方法拋出如果您嘗試讀取文件的末尾。

由於您尚未使用Scanner類顯示任何代碼,因此很難判斷出現問題的位置。


由於事實上,我已經把文件中的每個位置。在我的項目中的每個文件夾中都有一個副本,並且還在整個Projects文件夾中以及我的文檔中都有一個副本。

不這樣做。您正在創建一個難以清理的文件。如果你想知道你的程序讀取該文件,然後將下面這個簡單的行告訴你確切的路徑和文件名:

System.out.println(new File(args[0]).getAbsolutePath()); 

你有沒有像這樣一個簡單的小例子,嘗試:

package project2; 
import java.io.FileReader; 
import java.io.*; 
import java.util.Scanner; 
public class Project2 { 
    public static void main(String[] args) { 
     System.out.println(new File(args[0]).getAbsolutePath()); 
     FileReader inputFile = new FileReader(args[0]); 
     try (Scanner s = new Scanner(inputFile)) { 
      while (s.hasNextLine()) { 
       System.out.println(s.nextLine()); 
      } 
     } 
    } 
} 

它應該打印出你的文件的名稱與完整的路徑,然後逐行的文件的內容。

+0

我很欣賞這個輸入。我做的第一件事是聲明這個方法是拋出這個異常,但它仍然說該文件找不到。 問題在於錯誤不應該出現在第一位 – Jarbcd

+0

@Jarbcd您是否嘗試過按照建議打印出文件名和路徑? ('System.out.println(new File(args [0])。getAbsolutePath());') –

相關問題