2017-02-01 10 views
0

私はプログラミングにとても慣れていて、テキストファイルからデータを読み込もうとすると多くの問題を抱えています。シンプルなJavaプログラムはファイルを読み込みません

  1. 私の最初の問題は、自分のファイルに対して新しいScannerオブジェクトを作成しようとしたことです。 .getAbsolutePath()をファイルオブジェクトの後に追加しない限り、「ファイルが見つかりません」というエラーが出ます。

  2. 今、ファイルからデータを読み取ることができないようです。ファイル内の各行を出力しようとすると出力が得られません。

私は非常に明白な何かを見逃していると思います。誰か助けてくれますか?

public static void main(String[] args) { 
    File inputFile = new File("menu.txt"); 
    System.out.println("Reading from file" + inputFile); 
    Scanner inputScanner = new Scanner(inputFile.getAbsolutePath()); 
    String answer; 

    while (inputScanner.hasNextLine()){ 
     answer = inputScanner.nextLine(); 
     System.out.println(answer); 

    } 
} 

EDIT:元々は、ファイルオブジェクトをスキャナオブジェクトの作成に渡していましたが、まだエラーが発生していました。

+6

'File.getAbsolutePath' retu rnsは 'String'です。また、 'Scanner(String)'は 'File'から読み取られません(' String'だけを読み込みます)。 –

+0

プロジェクトディレクトリにあるmenu.txtです。私は私のプロジェクトディレクトリ内のすべてのファイルを列挙し、そのパスはうまく印刷されました。私はまた、menu.txtの代わりにフルパスを使用してみました。 –

+0

@ElliottFrisch:もっと重要な問題が見つかりました –

答えて

0

Scannerをファイルから読み取ろうとしていますが、Scannerは、指定された文字列からトークン(たとえば、行)を読み取るために使用されています。代わりに、あなたはあなたのファイルを読むためにReaderを使用する必要があります。

File inputFile = new File("menu.txt"); 
System.out.println("Reading from file" + inputFile); 
BufferedReader inputReader = new BufferedReader(new FileReader(inputFile.getAbsolutePath())); 
String answer; 

while ((answer = inputReader.readLine()) != null) { 
    System.out.println(answer); 
} 

UPDATE:あなたが本当にしたい場合あなたはスキャナを使用することができます - しかし、あなたは、コンストラクタにPathオブジェクトを渡す必要があります。

File inputFile = new File("menu.txt"); 
System.out.println("Reading from file" + inputFile); 
Scanner inputScanner = new Scanner(inputFile); 
String answer; 

while (inputScanner.hasNextLine()){ 
    answer = inputScanner.nextLine(); 
    System.out.println(answer); 

} 

(私はこのコードをテストしていないことに注意してください。)

+0

これは、Scannerがファイルからうまく読み取ることができるので、私を混乱させます。 –

+0

@HovercraftFullOfEelsスキャナはファイルから読み取ることができます - 正しい - しかし、ファイルは文字列ではなくパスとして提供されます。私は答えを更新します。 –

+1

@AleksG 'File'引数を取る適切な' Scanner'コンストラクタがあります。最初に 'Path'に変換する必要はありません。 – davmac

-1
public class Test { 
//The file should be in contained within the root of your project. 
// When you execute a project in eclipse, the working directory is the most top level of your project. 
// Right click your project, click New>File, and make a txt file called "TheGame.txt". 
private static final String FILENAME = "menu.txt"; 

public static void main(String[] args) { 

    try (BufferedReader inputFile = new BufferedReader(new FileReader(FILENAME))) { 
     System.out.println("Reading from file" + inputFile); 

     String answer; 

     while ((answer = inputFile.readLine()) != null) { 
      System.out.println(answer); 
     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 
} 
関連する問題