1

Javaがファイルを探す場所について他のスレッドを見てきましたが、それでも混乱しています。

Eclipse(Juno)でJavaプロジェクトとして作成されたプログラムがあります。私は他に何も変更を加えておらず、今のところメインクラスしかありません。

プログラムを実行すると、数値と2つの文字列の3つの入力が必要になります。最初の文字列は入力を読み取る必要のあるファイルの名前であり、2番目の文字列は出力を配置する必要のあるファイルです。

入力文字列に「input.txt」を渡して、input.txtというファイルがある場合、Javaはそれをどこで見つける必要がありますか?src、bin、およびプロジェクトルートに配置してみました。現在、次のようにファイルにアクセスしようとしています。

File input = new File(args[1]);

ここで、args [1]は、開始時にプログラムに渡される最初の文字列です。これを行うと、「java.io.FileNotFoundException:input.txt(システムは指定されたファイルを見つけることができません)」というエラーが発生します。

Javaがファイルを見つけられるように、ファイルをどこに置くべきですか?

関連するコードは次のとおりです。

public class main {

public static int runs;
public static File input;
public static File output;

public static String line1;
public static String line2;
public static String line3;
public static String reactions;

/**
 * @param args 
 */
public static void main(String[] args){

    if(args.length != 3)
        System.out.println("Please provide 3 arguments.");

    runs = Integer.parseInt(args[0]);
    File input = new File(args[1]);
    File output = new File(args[2]);

    System.out.println(runs);
    System.out.println(input);


    try {
        Scanner sc = new Scanner(input);
4

4 に答える 4

2

このような質問については、getAbsolutePath() メソッドを使用してみてください。

File input = new File(args[1]);
System.out.println(input.getAbsolutePath());

これは、ファイル オブジェクトがファイルがどこにあると考えているかを示します。そこにファイルを配置する必要があります... または、それに応じて入力引数を変更して、プログラムがファイルを配置したい場所でファイルを検索するようにします。

于 2013-02-06T17:56:10.703 に答える
1

その入力ファイルをプロジェクトのルートフォルダに置くだけです。

アップデート :

スキャナーを使用してユーザー入力を取得しているため。次に、引数に使用しているコード、つまりコマンドライン引数を非表示にします。

Scanner sc = new Scanner(input);
runs = sc.nextInt(); // This will store your input line  
in = sc.next(); // This will store your input file name 
out = sc.next();  // This will store your output file name 
于 2013-02-06T17:53:10.760 に答える
0

/ファイル名が絶対的でない場合( * nixおよびWindowsではで始まらないC:\)、現在の作業ディレクトリで検索されます。Javaプログラムは、を使用して現在の作業ディレクトリを取得できますSystem.getProperty ("user.dir")

于 2013-02-06T17:53:26.917 に答える
0

Eclipseでは、実行構成の実行ディレクトリーを明示的に設定する必要があります。

デフォルトで使用されるディレクトリは、プロジェクト構成、パッケージング、出力ディレクトリなどに依存する可能性があるため、(a)絶対パス(たとえば、先頭にaなど)を使用するか、(b)実行構成で設定するのが最適c:\です/。 。

于 2013-02-06T17:54:17.480 に答える