我不确定你应该如何从Java文件的系统输入读入。
我希望能够致电java myProg < file
where file是我想要作为字符串读取的内容,并在main方法中提供给myProg。
有什么建议吗?
答案 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.in
或InputStreamReader来阅读{{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");
}
}