从System.in读入 - Java

时间:2011-03-30 14:59:21

标签: java input system.in

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

我希望能够致电java myProg < file

where file是我想要作为字符串读取的内容,并在main方法中提供给myProg。

有什么建议吗?

8 个答案:

答案 0 :(得分:56)

您可以使用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());
    }
}

答案 1 :(得分:18)

好吧,您可以阅读System.in本身,因为它是有效的InputStream。或者您也可以将其包装在BufferedReader

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

答案 2 :(得分:5)

使用System.in,它是一个仅用于此目的的InputStream

答案 3 :(得分:5)

在Java中,控制台输入是通过读取 System.in 来完成的。获得基于角色的 连接到控制台的流,将 System.in 包装在 BufferedReader 对象中。 BufferedReader 支持缓冲输入流。它最常用的构造函数 如下所示:

BufferedReader(Reader inputReader)

这里,inputReader是链接到 BufferedReader 实例的流 创建。 Reader 是一个抽象类。其具体的子类之一是 InputStreamReader , 将字节转换为字符。

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

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

答案 4 :(得分:4)

您可以使用System.inInputStreamReader来阅读{{1}},就像使用键盘输入一样。

答案 5 :(得分:1)

您可以致电java myProg arg1 arg2 ...

public static void main (String args[]) {
    BufferedReader in = new BufferedReader(new FileReader(args[0]));
}

答案 6 :(得分:-4)

你可能正在寻找类似的东西。

FileInputStream in = new FileInputStream("inputFile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));

答案 7 :(得分:-5)

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");
}
}