Чтение Eclipse stdin (System.in) из файла

Возможно ли, чтобы Eclipse считывал stdin из файла?

Чистая Java

Вы можете перенаправить System.in с помощью одной строки кода:

System.setIn(new FileInputStream(filename)); 

См. System.setIn () .

Конфигурация Eclipse

В Eclipse 4.5 или более поздней версии диалоговое окно конфигурации запуска может установить System.in для чтения из файла. См. Объявление здесь .

Общая вкладка диалога «Настройка запуска»

[Обновление] Как было указано в комментариях, этот ответ вводит в заблуждение, поэтому я обновил его, чтобы исправить ошибки. [/Обновить]

В командной строке bash или командной строки вы можете: C:\myprogramm < file.txt (Windows) или ./myprogramm < file.txt (Linux)

К сожалению, в Eclipse достичь такого же результата невозможно, так как нет возможности привязать stdin к файлу в eclipse. Вместо этого вам придется вручную открыть файловый stream в вашем коде, а затем прочитать его. Один из способов сделать это - использовать аргумент программы, чтобы включить его, а другой - с параметром файла. См. Ответ Скотта о том, какой код нужно добавить для анализа опции -d из массива аргументов программы.

Когда вы хотите указать на какой-либо файл внутри вашего проекта Eclipse, вам нужно быть осторожным, чтобы получить правильное местоположение и использовать переменную $ {resource_loc:}:

 -d ${resource_loc:/MyProject/file} 

конечно, вы также можете установить абсолютный путь:

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

Параметр resource_loc относится к вашей рабочей области. Это папка, в которой хранятся все проекты затмения. Оттуда вы все равно должны ссылаться на свою папку проекта, а затем на файл, который хотите загрузить.

Возможно, вам придется настроить направление косой черты, в зависимости от того, используете ли вы Linux или Winodws.

Обновление 2015 года

Появилась новая версия Eclipse, Eclipse 4.5 (Mars), которая исправила проблему !

Это объявление и описание функции: http://eclipse.org/mars/noteworthy/#_assigning_stdin_to_a_file

Теперь Stdin можно назначить файлу на вкладке « Общие » диалоговых окон конфигурации запуска. введите описание изображения здесь

Как и ожидалось, это новая функция только что выпущенного eclipse 4.5 и поэтому не будет работать в более старой версии.

На вкладке «Общие» диалогового windows «Запуск» в разделе «Стандартный ввод и вывод» есть флажок для «файла». но он, кажется, только для вывода …

Я ожидаю увидеть 2 поля файла, один для стандартного, один для стандартного с параметрами добавления.

Вам нужно будет настроить ваш код, чтобы он работал в затмении. Другие ответы выше не срабатывали, когда я пытался. Другой, который я видел, говоря, чтобы изменить Run ..> вкладка «Общие»> «Стандартный ввод и вывод»> «Файл» изменил поведение 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); } 

Вам все равно придется задавать свои аргументы программы в меню «Запуск», как описано в этом ответе.

Решение для меня (работа на Mac с использованием Eclipse CDT для приложения C) заключалось в том, чтобы добавить «<путь / в / некоторый файл» в конце других аргументов на вкладке «Аргументы» диалогового окна «Запуск конфигурации».

Также проверьте этот другой вопрос для ответа, связанного с запуском Java-программы в приостановленном состоянии, а затем с помощью отладчика, использующего Eclipse.

Я не вижу приятного способа сделать это, используя стандартный диалог запуска Eclipse. Тем не менее, вы можете сделать это с помощью средства запуска внешнего инструмента и либо использовать стандартный синтаксис «

Это не автоматизировано, что я и предполагаю, но вы можете копировать и вставлять содержимое своего infile на консоль Eclipse при запуске своей программы.

 < ${workspace_loc:/MyProject/file} 

в аргументах конфигурации отладки / аргументов / программ:

хорошо работает для меня.

Для linux: я думаю, самый простой способ – написать ш-скрипт.

1) напишите run.sh следующим образом:

ваша программа с параметрами

2) В конфигурации профиля Eclipse укажите

[tab Main] C ++ Запустить приложение = / bin / sh

[tab Аргументы] Аргументы программы = run.sh

Вот и все. Когда вы запустите проект, вы увидите вывод скрипта в консоли eclipse. Вы можете сделать что-то подобное в Windows.

Это удивительно не поддерживается в Eclipse, и, похоже, нет текущих планов по его добавлению. См. https://bugs.eclipse.org/bugs/show_bug.cgi?id=155411, чтобы следить и голосовать.

Я буду обновлять здесь, если это они реализуют.

То, что я сделал, это создать цель Ant и запустить ее как «Run External» из Eclipse, вот шаги:

  • У меня есть один входной файл для чтения: res\in.txt и один для вывода: res\out.txt
  • Создайте build.xml с build.xml вами целями (это всего лишь пример):

                  
  • В Eclipse перейдите к: Run->External Tools->External Tools Configurations->Ant Build-> New Launch Configuration используйте следующую конфигурацию:

Section Main

Buildfile: ${workspace_loc:/Tests/build.xml}

Базовый каталог: ${workspace_loc:/Tests}

* Примечание. Тесты – это название моего проекта Eclipse

Теперь вы можете запустить свой проект, нажав кнопку Run Extenal на панели инструментов и изменив входные или выходные файлы, как вам было нужно

  • Использование BufferedReader для чтения текстового файла
  • Поддерживает ли Google App Engine создание файлов и папок на сервере?
  • Как заставить Logstash повторно просмотреть файл?
  • Прокрутите все файлы с определенным расширением
  • onActivityResult's намерение.getPath () не дает мне правильное имя файла
  • Получить версию файла в PowerShell
  • Android; Проверьте, существует ли файл без создания нового
  • Откройте существующий файл, добавьте одну строку
  • скопировать файл базы данных на SDCard в android
  • Как создать zip-архив с помощью PowerShell?
  • Быстрый и грязный способ обеспечения одновременного запуска только одного экземпляра сценария оболочки
  • Interesting Posts

    Абстракция VS Информация, скрывающая VS Encapsulation

    Как выполнить обратный поиск строк в Excel без использования VBA?

    «Требуется миграция области», исключение в android при извлечении значений из realm db

    Есть ли собственный инструмент для анализа XML-файлов, доступных на RedHat?

    Как объединить два-два десятичных знака в Java?

    Доступ к элементу C ++ const

    Как выбрать любой файл видео или фильма из UIImagePickerController

    Поддержка optgroup в выпадающем списке .NET MVC?

    Как я могу низкоуровневый формат USB-накопителя?

    p: dataExporter не распознает p: cellEditor

    Без броска VirtualMachineError гарантирует

    Возможно ли распознать аппаратное обеспечение (маршрутизатор или сетевую карту) только по его MAC-адресу?

    Windows 7 сбой при использовании драйвера nVidia, отлично работает в безопасном режиме или без видеодрайвера

    Каковы ключи в classе виджетов без учета состояния?

    Android Studio не развертывает изменения в приложении

    Давайте будем гением компьютера.