2

クラスプロジェクトの場合、.txtスキャナーでファイルを読み取らなければなりませんでしたが、完全に機能していました。私の教授が唯一不満だったのは、私のコードが.txtファイルへのパスをハードコーディングしていたことです。たとえば、次のようになります。

Scanner sc = new Scanner(new File("Users/Me/Documents/Programming/code.txt"));

つまり、ファイルがその正確なフォルダーにある場合にのみファイルを読み取ります。とにかく、私が知りたかったのは、スキャナーがドキュメントを検索してファイルを読み取らせ、その正確なフォルダーにファイルを入れずに、次のように見せる方法です。

Scanner sc = new Scanner(new File("code.txt"));

.txt ファイル名にa を追加するようなものだと聞きましたが"\"、よくわかりません。

4

6 に答える 6

2

あなたの教授は、コマンドライン引数をあなたの Java プログラムに渡すという考えに駆り立てられていたと思います。String[] argsの署名の を覚えていstatic void mainますか? それは、最も柔軟なメカニズムであるため、彼がおそらくあなたに使用してほしいメカニズムです。

コマンドラインで任意の数の文字列をプログラムに渡すことができるため、最初の引数がユーザーがプログラムで開くファイルの名前になるという規則を作成できます。

static public void main(String[] args) {
    if (args.length < 1) {
        System.err.println("Please pass a file name argument.");
        return;
    }
    Scanner sc = new Scanner(new File(args[0]));
    // ... do something useful
}
于 2012-05-20T01:37:33.283 に答える
1

「code.txt」は、code.txt が同じディレクトリにある限り正常に機能します。

それ以外の場合は、「../code.txt」で前のディレクトリに移動します。

于 2012-05-20T01:35:15.653 に答える
1

プログラムでファイル名を検索して取得したい場合は、ここからの回答のいずれかを適応させてください。

javaでディレクトリ内のテキストファイルを再帰的に検索しますか?

検索する場所を指定してから、必要なファイル名が得られるまですべてのファイルを再帰的に調べることができます。次に、ファイルで必要なことを行います。また、 JFileChooserSwing コンポーネントの使用が許可されているかどうかも確認してください。

于 2012-05-20T01:59:37.590 に答える
0

わかりました、私はまったく同じタスクを私から割り当てられたので、次はあなたの教授が望んでいたものであると確信しています.

Fileファイル名を含む のインスタンスを に渡す代わりに、 をScanner使用してファイル名を読み込み、 の別のScannerインスタンスを作成し、Fileによって読み取られたファイル名を渡してみScannerませんか?

Scanner input = new Scanner(System.in);
String fileName = input.nextLine();

Scanner scan = new Scanner(new File(fileName));

ユーザーは引き続きファイルのフルパスを提供する責任がありますが、少なくとも今ではユーザーが入力したものであり、例に表示されているようにプログラムにハードコードされていません.

これが、あなたの教授があなたにこのプログラムを書くことを意図した方法であると確信しています。

于 2012-05-20T02:37:01.473 に答える
0

これがJavaアプリケーションの場合は、試してください

Scanner sc = new Scanner(new File(args[0]));

最初のコマンド ライン引数としてファイル名を指定します。

もちろん、これはメソッドでスキャナーが作成されている場合などにのみ機能します。引数が存在することmainなども確認する必要があります。args.length

于 2012-05-20T01:37:37.120 に答える
0
  1. このテキスト ファイルが実行時に指定されている場合は、メインに提供された引数配列から読み取ります。
  2. 埋め込み (定数) アプリケーション リソースの場合は、次のようなものを使用して URL を取得します。

URL urlToInput = this.getClass().getResource("/resources/code.txt");
于 2012-05-20T01:59:04.053 に答える