58

私は、テキストファイルを行ごとに読み取り、それぞれに番号を付け、各番号を配列にスローしてから、挿入ソートを使用して配列をソートしようとする Java プログラムに取り組んでいます。プログラムにテキスト ファイルを読み取らせる方法を教えてください。

次のエラー メッセージが表示されます。

java.io.FileNotFoundException: 10_Random (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.util.Scanner.<init>(Unknown Source)
at insertionSort.main(insertionSort.java:14)

「src」「bin」およびメイン プロジェクト フォルダに .txt ファイルのコピーがありますが、まだファイルが見つかりません。ちなみにEclipseを使っています。

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class insertionSort {

public static void main(String[] args) {

    File file = new File("10_Random");

    try {

        Scanner sc = new Scanner(file);

        while (sc.hasNextLine()) {
            int i = sc.nextInt();
            System.out.println(i);
        }
        sc.close();
    } 
    catch (FileNotFoundException e) {
        e.printStackTrace();
    }
 }
}
4

12 に答える 12

67

ここにファイル拡張子を入れる必要があります

File file = new File("10_Random.txt");
于 2012-11-01T21:29:43.347 に答える
27

次のコードを使用してファイルを読み取ります

import java.io.File;
import java.util.Scanner;

public class ReadFile {

    public static void main(String[] args) {

        try {
            System.out.print("Enter the file name with extension : ");

            Scanner input = new Scanner(System.in);

            File file = new File(input.nextLine());

            input = new Scanner(file);


            while (input.hasNextLine()) {
                String line = input.nextLine();
                System.out.println(line);
            }
            input.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

-> このアプリケーションは、ファイルの内容を 1 行ずつ印刷しています

于 2014-09-23T10:36:51.550 に答える
11

ここにいくつかの実用的でテスト済みの方法があります。

using Scanner

package io;

import java.io.File;
import java.util.Scanner;

public class ReadFromFileUsingScanner {
    public static void main(String[] args) throws Exception {
        File file=new File("C:\\Users\\pankaj\\Desktop\\test.java");
        Scanner sc=new Scanner(file);
        while(sc.hasNextLine()){
            System.out.println(sc.nextLine());
        }
    }
}


Scannerクラスを使用してファイル全体を(ループなしで)読み取る別の方法を次に示します

package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ReadingEntireFileWithoutLoop {
    public static void main(String[] args) throws FileNotFoundException {
        File file=new File("C:\\Users\\pankaj\\Desktop\\test.java");
        Scanner sc=new Scanner(file);
        sc.useDelimiter("\\Z");
        System.out.println(sc.next());
    }
}

使用してBufferedReader

 package io;
import java.io.*;
public class ReadFromFile2 {
    public static void main(String[] args)throws Exception {
        File file=new File("C:\\Users\\pankaj\\Desktop\\test.java");
        BufferedReader br=new BufferedReader(new FileReader(file));
        String st;
        while((st=br.readLine())!=null){
            System.out.println(st);
        }
    }
}

using FileReader

package io;
import java.io.*;
public class ReadingFromFile {
    public static void main(String[] args) throws Exception {
        FileReader fr=new FileReader("C:\\Users\\pankaj\\Desktop\\test.java");
        int i;
        while((i=fr.read())!=-1){
            System.out.print((char) i);
        }
    }
}
于 2017-01-10T18:30:22.397 に答える
7
  1. ファイル名が正しいことを確認してください(適切な大文字と小文字の区別、拡張子の一致など-すでに提案されているように)。

  2. このメソッドを使用Class.getResourceして、クラスパスでファイルを検索します。現在のディレクトリに依存しないでください。

    URL url = insertionSort.class.getResource("10_Random");
    
    File file = new File(url.toURI());
    
  3. コマンドライン引数を使用してファイルの絶対パスを指定します。

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

Eclipseの場合:

  1. 「構成の実行」を選択します
  2. [引数]タブに移動します
  3. 「c:/my/file/is/here/10_Random.txt.or.whatever」を「プログラム引数」セクションに入れます
于 2012-11-01T21:35:46.027 に答える
2
  1. ファイル拡張子を含む正確なファイル名を指定する必要があります10_Random.txt
  2. 明示的なパスなしでファイルを参照する場合、ファイルは実行可能ファイルと同じディレクトリにある必要があります。
  3. intを読む前にを確認する必要がありますint。with をチェックしてから with を期待するのは安全ではありませhasNextLine()ん。を使用して、実際に取得する があることを確認する必要があります。もちろん、1 行に 1 つの整数という規則をどの程度厳密に適用するかは、あなた次第です。intnextInt()hasNextInt()int
于 2012-11-01T21:33:36.777 に答える
1

ファイル パス ここで問題のようです。ファイルが正しいディレクトリに存在することを確認するか、絶対パスを指定して正しいファイルを指していることを確認してください。file.getAbsolutePath() をログに記録して、ファイルが正しいことを確認してください。

于 2015-05-26T05:17:42.447 に答える
1

どちらかを使用する必要があります

File file = new File("bin/10_Random.txt");

または

File file = new File("src/10_Random.txt");

Eclipse のプロジェクト フォルダーを基準にします。

于 2017-10-13T17:46:17.490 に答える
0

読み込むファイルは、指定したファイル名と正確に一致する必要があります。 "10_random"「10_random.txt」ではなく、「10_random.blah」ではなく、求めているものと正確に一致する必要があります。一致するようにどちらかを変更して、一致させることができますが、一致することを確認してください. 使用している OS のファイル拡張子を表示すると役立つ場合があります。

また、ファイルの場所については、コンパイルの結果である最終的な実行可能ファイル (.class ファイル) と同じ作業ディレクトリ (同じレベル) に配置する必要があります。

于 2012-11-01T21:31:19.747 に答える