68

Eclipseがファイルからstdinを読み取ることは可能ですか?

4

11 に答える 11

59

ピュア Java

次の 1 行のコードで System.in をリダイレクトできます。

System.setIn(new FileInputStream(filename));

System.setIn()を参照してください。

エクリプス構成

Eclipse 4.5 以降では、起動構成ダイアログで System.in をファイルから読み取るように設定できます。こちらの発表をご覧ください。

起動設定ダイアログの共通タブ

于 2008-10-09T18:49:46.767 に答える
12

[更新]コメントで指摘されているように、この回答は誤解を招くものであったため、エラーを修正するために更新しました。[/アップデート]

bash またはコマンド プロンプトで実行できること: C:\myprogramm < file.txt(Windows) または./myprogramm < file.txt (Linux)

残念ながら、Eclipse では stdin をファイルにバインドするオプションがないため、同じ結果を達成することはできません。代わりに、コードでファイル ストリームを手動で開き、代わりにそこから読み取る必要があります。これを行う 1 つの方法は、プログラム引数を使用してそれを有効にし、別の方法では file パラメーターを使用することです。プログラム引数配列から -d オプションを解析するために追加する必要があるコードの種類については、Scott の回答を参照してください。

Eclipse プロジェクト内のファイルを参照する場合は、場所を正しく取得し、${resource_loc:} 変数を使用するように注意する必要があります。

-d ${resource_loc:/MyProject/file}

もちろん、絶対パスを入れることもできます:

-d path/to/file or -d C:\path\to\file

resource_loc パラメーターはワークスペースを参照します。これは、すべてのEclipseプロジェクトが保存されているフォルダーです。そこから、プロジェクトフォルダーを参照してから、ロードするファイルを参照する必要があります。

Linux を使用しているか Winodws を使用しているかによって、スラッシュの方向を微調整する必要がある場合があります。

于 2011-05-14T19:44:50.407 に答える
12

2015年更新

この問題を修正した新しい Eclipse バージョン、Eclipse 4.5 (Mars) があります。

これは機能の発表と説明です: http://eclipse.org/mars/noteworthy/#_assigning_stdin_to_a_file

起動設定ダイアログの [ 共通] タブで、標準入力をファイルに割り当てることができるようになりました。ここに画像の説明を入力

予想どおり、これはリリースされたばかりの Eclipse 4.5 の新機能であるため、古いバージョンでは機能しません。

于 2015-07-08T08:50:18.237 に答える
8

実行ダイアログの「共通」タブの「標準入出力」の下に、「ファイル」のチェックボックスがあります。しかし、それは出力専用のようです...

そこには2つのファイルフィールドが表示されると思います。1つは標準入力用、もう1つは追加オプション付きの標準出力用です。

于 2008-10-09T19:39:49.923 に答える
6

これをEclipse内で機能させるには、コードを微調整する必要があります。上記の他の回答は、私が試したときに機能しませんでした。Run ..> Common tab> Standard Input and Output> Fileを変更するように言っているのを見た別のものは、入力ではなく、stdoutの動作をファイルに変更しただけです。

解決策は、「-d」オプションを実行可能な解決策にすることでした。プログラムの引数に何かを入れると、メインに渡されます。したがって、main の開始時にできることは、次のようなものです。

    Scanner in;
    if (args!=null && args.length>0 && args[0].equals("-d")){
        in = new Scanner(new File(args[1]));
    } else {
        in = new Scanner(System.in);
    }

この回答で説明されているように、Run.. メニューでプログラムの引数を設定する必要があります。

于 2012-06-08T23:26:50.343 に答える
5

私にとっての解決策(Macで実行し、CアプリケーションにEclipse CDTを使用)は、[構成の実行]ダイアログの[引数]タブの他の引数の最後に「<path / to/somefile」を追加することでした。

また、この他の質問で、Javaプログラムを一時停止状態で起動し、Eclipseを使用してデバッガーを接続することに関する回答を確認してください。

于 2011-05-18T08:37:37.643 に答える
4
< ${workspace_loc:/MyProject/file}

デバッグ構成/引数/プログラム引数:

私にとってはうまくいきます。

于 2012-06-03T17:52:24.380 に答える
4

標準のEclipse Runダイアログを使用してそれを行う良い方法がわかりません。ただし、外部ツール ランチャーを使用して、標準の "< infile" 構文を使用するか、.bat/.sh スクリプトを呼び出して実行できる場合があります。

これは自動化されていませんが、これはあなたが望んでいることだと思いますが、プログラムを起動するときに、インファイルの内容をコピーして Eclipse コンソールに貼り付けることができます。

于 2008-10-09T19:17:09.970 に答える
2

Linux の場合: 最も簡単な方法は、sh スクリプトを作成することだと思います。

1) run.sh を次のように記述します。

params < input.txtを使用したプログラム

2)Eclipseプロファイル構成で指定します

[メインタブ] C++ Run Application = /bin/sh

[タブの引数] プログラムの引数 = run.sh

それでおしまい。プロジェクトを実行すると、Eclipse コンソールにスクリプトの出力が表示されます。Windows でも同様のことができます。

于 2013-11-04T12:45:14.067 に答える
1

これは驚くべきことに Eclipse ではサポートされておらず、現在追加する予定はないようです。フォローして投票するには、https://bugs.eclipse.org/bugs/show_bug.cgi?id=155411を参照してください。

彼らがそれを実装した場合、私はここで更新します。

于 2013-03-09T21:24:44.520 に答える
0

私がしたことは、Ant ターゲットを作成し、それを Eclipse から「Run External」として起動することでした。手順は次のとおりです。

  • 読み取り元となる入力ファイルが 1res\in.txtつと、出力用に 1 つのファイルがあります。res\out.txt
  • 必要なターゲットを使用して を作成しbuild.xmlます (これは単なる例です)。

    <project basedir="." default="run" name="Tests">
    <target name="clean">
    <delete dir="bin"/>
    </target>
    
    <target name="compile">
    <mkdir dir="bin"/>
    <javac srcdir="src" destdir="bin" includeantruntime="false"/>
    </target>
    
    <target name="build" depends="clean,compile"/>
    
    <target name="run" depends="build">
    <java classname="Main" input="res\in.txt" output="res\out.txt" classpath="bin" />
    </target>
    </project>
    
  • EclipseRun->External Tools->External Tools Configurations->Ant Build-> New Launch Configurationでは、次の構成を使用します。

Section Main

ビルドファイル:${workspace_loc:/Tests/build.xml}

ベース ディレクトリ:${workspace_loc:/Tests}

*注: Tests は、私の Eclipse プロジェクトの名前です

これで、Run Extenal ツールバー ボタンをクリックしてプロジェクトを実行し、必要に応じて入力ファイルまたは出力ファイルを変更できます。

于 2013-03-25T23:33:38.157 に答える