从System.in读入 – Java

我不确定你应该如何从Java文件的系统input中读入。

我想能够调用java myProg < file

文件是我想要作为一个string读取,并在主要方法中给予myProg。

有什么build议么?

您可以使用System.in从标准input读取。 IT就像从键盘input一样。 操作系统处理从文件到标准input。 🙂

 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,它只是用于这个目的

您可以像使用InputStreamReader或Scanner的键盘input一样从System.in读取数据。

在Java中,控制台input是通过从System.in中读取完成的。 要获取连接到控制台的基于字符的stream,请将System.in包装在BufferedReader对象中。 BufferedReader支持缓冲inputstream。 其最常用的构造函数如下所示:

 BufferedReader(Reader inputReader) 

这里,inputReader是链接到正在创build的BufferedReader的实例的stream。 读者是一个抽象的类。 其中一个具体的子类是InputStreamReader ,它将字节转换为字符。

要获取链接到System.in的InputStreamReader对象,请使用以下构造函数:

 InputStreamReader(InputStream inputStream) 

由于System.in引用InputStreamtypes的对象,因此可用于inputStream。 综合起来,下面这行代码创build一个连接到键盘的BufferedReader

 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

执行此语句后,br是一个基于字符的stream,通过System.in链接到控制台。

这是从Java- The Complete Reference by Herbert Schildt的“ Java- The Complete Reference by Herbert Schildt ”一书中获得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"); } }