Я не уверен, как вы должны читать из системного ввода из файла Java.
Я хочу иметь возможность называть java myProg < file
Где файл - это то, что я хочу прочитать в виде строки и передать myProg в основном методе.
Любые предложения?
Я не уверен, как вы должны читать из системного ввода из файла Java.
Я хочу иметь возможность называть java myProg < file
Где файл - это то, что я хочу прочитать в виде строки и передать myProg в основном методе.
Любые предложения?
Вы можете использовать System.in
для чтения со стандартного ввода. ИТ работает так же, как ввод его с клавиатуры. ОС обрабатывает переход из файла в стандартный ввод.: -)
class myProg {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Printing the file passed in:");
while(sc.hasNextLine()) System.out.println(sc.nextLine());
}
}
Ну, вы можете прочитать System.in
, так как это действительный InputStream
. Или вы можете обернуть его в BufferedReader
:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Используйте System.in, это InputStream, который просто служит этой цели
Вы читали бы из System.in
так же, как и для ввода с клавиатуры, например, InputStreamReader или Scanner.
В Java консольный ввод выполняется с помощью System.in. Для получения символа поток, прикрепленный к консоли, оберните System.in в BufferedReader. BufferedReader поддерживает буферный входной поток. Его наиболее часто используемый конструктор здесь:
BufferedReader(Reader inputReader)
Здесь inputReader - это поток, который связан с экземпляром BufferedReader, который создано. Reader - абстрактный класс. Один из его конкретных подклассов InputStreamReader, который преобразует байты в символы.
Чтобы получить объект InputStreamReader, связанный с System.in, используйте следующий конструктор:
InputStreamReader(InputStream inputStream)
Поскольку System.in относится к объекту типа InputStream, его можно использовать для inputStream. Объединяя все это, следующая строка кода создает BufferedReader, который подключен к клавиатуре:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
После выполнения этого оператора br - поток, основанный на символах, который связан с консолью через System.in.
Это взято из книги Java- The Complete Reference by Herbert Schildt
Вы можете вызвать java myProg arg1 arg2 ...
:
public static void main (String args[]) {
BufferedReader in = new BufferedReader(new FileReader(args[0]));
}
Вероятно, вы ищете что-то вроде этого.
FileInputStream in = new FileInputStream("inputFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
class myFileReaderThatStarts with arguments
{
class MissingArgumentException extends Exception{
MissingArgumentException(String s)
{
super(s);
}
}
public static void main(String[] args) throws MissingArgumentException
{
//You can test args array for value
if(args.length>0)
{
// do something with args[0]
}
else
{
// default in a path
// or
throw new MissingArgumentException("You need to start this program with a path");
}
}