java - Java 中的 Ubuntu : Redirection from a . txt 文件

标签 java redirect

这应该非常简单,但由于某种原因,我无法让该程序从 .txt 文件获取参数并将其输出。这是我的代码:

public class Lab2 {

static Scanner input = new Scanner(System.in);

public static void main(String[] args)
{   
    Lab2_CLA.Lab2_CLA(args);        
}
}

public class Lab2_CLA {

public static void Lab2_CLA(String[] data)
{
    System.out.printf("%s, %s: %s%n", data[1], data[0], data[2]);
}
}

我编译了代码,如果我通过终端给它参数,它就可以工作。例如:

输入“java lab2/Lab2 John Doe 12345678

打印出:“Doe, John: 12345678

但是,如何通过在终端中输入以下内容来让它从 .txt 文件读取数据:“java lab2/Lab2 < input.txt”?每当我这样做时,我都会收到以下错误:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at lab2.Lab2_CLA.Lab2_CLA(Lab2_CLA.java:12)
at lab2.Lab2.main(Lab2.java:34)

最佳答案

输入重定向将文件发送到程序的 stdin(标准输入文件),而不是其命令行参数。在类 Unix 系统上,您可以使用反引号运算符获得所需的效果:

java lab2/Lab2 `cat input.txt`

简而言之,执行反引号之间的文本,并将执行结果插入到其位置。

编辑(回应OP的编辑):

您会遇到越界异常,因为通过重定向,程序不会获取任何命令行参数,但会硬寻址 args 数组的元素 0、1 和 2。

如果由于某种原因,基于反引号的解决方案对您来说不可行,唯一的选择是修改您的程序以读取其标准输入(此处显示的技术 Java file input as command line argument ),或接受文件名作为参数,然后读取该文件文件。

关于java - Java 中的 Ubuntu : Redirection from a . txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7508381/

相关文章:

java - Jackson XML 列表元素匹配它们的根名称

php - 登录后Opencart登录到上一个查看的页面?

javascript - 将桌面用户重定向到另一个页面,将移动用户重定向到主页

linux - 从错误中复制最后一个词并输入到下一个命令

Java值总是为空?

java - 更改 libgdx 中的图像

java - 如何显示用于静音原生广告的谷歌表单?

java - Elasticsearch 服务器发现配置

java - 如何使 Jersey 2 客户端在重定向时处理 cookie

redirect - WFP ALE_CONNECT_REDIRECT 图层 block 过滤器不起作用