Eclipse是否可以从文件读取stdin?
Eclipse是否可以从文件读取stdin?
Answers:
您可以使用单行代码重定向System.in:
System.setIn(new FileInputStream(filename));
请参阅System.setIn()。
[更新]正如评论中指出的那样,此答案具有误导性,因此我已对其进行更新以更正错误。[/更新]
在bash或命令提示符下,您可以执行以下操作:
C:\myprogramm < file.txt
(Windows)或./myprogramm < file.txt
(Linux)
不幸的是,在Eclipse中无法获得相同的结果,因为没有选择将stdin绑定到eclipse中的文件。相反,您将不得不在代码中手动打开文件流,然后从中读取文件流。一种方法是使用程序参数启用它,另一种方法是使用file参数。有关解析程序参数数组中的-d选项所需添加的代码类型,请参见Scott的答案。
当您想指向Eclipse Project中的某个文件时,需要小心正确地定位位置并使用$ {resource_loc:}变量:
-d ${resource_loc:/MyProject/file}
当然,您也可以设置绝对路径:
-d path/to/file or -d C:\path\to\file
resource_loc参数引用您的工作空间。那是所有eclipse项目的存储文件夹。从那里,您仍然必须先引用项目文件夹,然后再引用要加载的文件。
您可能需要调整斜线方向,具体取决于您使用的是Linux还是Winodws。
有一个新的Eclipse版本Eclipse 4.5(Mars)已解决了该问题!
这是该功能的公告和说明:http : //eclipse.org/mars/noteworthy/#_assigning_stdin_to_a_file
现在可以在启动配置对话框的“常用”选项卡中将Stdin分配给文件。
不出所料,这是刚刚发布的eclipse 4.5的新功能,因此在较旧的版本中将无法使用。
Scanner sc = new Scanner(System.in);
已配置的设置可以完美地工作。确切地说,您可以在“运行”>“运行配置”>“通用”选项卡中找到以上屏幕。
在运行对话框的“常用”选项卡上的“标准输入和输出”下,有一个“文件”复选框。但它似乎仅用于输出...
我希望在那里看到2个文件字段,一个用于标准输入,一个用于带有附加选项的标准输出。
Standard Input and Output
您将需要对代码进行一些调整,以使其在eclipse中正常工作。当我尝试时,以上其他答案无效。我见过另一句话,说要更改“运行”。.>“常用”选项卡>“标准输入和输出”>“文件”仅将stdout行为更改为文件,而不是输入。
解决方案是将“ -d”选项变为可行的解决方案。如果您在程序参数中放入任何内容,它将被传递到您的main中。因此,您可以在main的开头执行以下操作:
Scanner in;
if (args!=null && args.length>0 && args[0].equals("-d")){
in = new Scanner(new File(args[1]));
} else {
in = new Scanner(System.in);
}
您仍然需要按照此答案中的说明在“运行..”菜单中设置程序参数。
public static void main(String [] args)
方法中,则无需检查是否args
为空-它将最少包含一个空数组。
< ${workspace_loc:/MyProject/file}
在调试配置/参数/程序参数中:
对我来说效果很好。
对于linux:我认为,最简单的方法是编写sh-script。
1)像这样编写run.sh:
您的程序与参数 <input.txt
2)在Eclipse概要文件配置中指定
[tab Main] C ++运行应用程序= / bin / sh
[选项卡参数]程序参数= run.sh
而已。当您运行项目时,您将在eclipse控制台中看到脚本的输出。您可以在Windows中执行类似的操作。
令人惊讶的是,Eclipse不支持此功能,并且似乎当前没有计划添加它。请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=155411进行投票。
如果他们实现了,我将在这里更新。
我要做的是创建一个Ant目标,并从Eclipse作为“ Run External”启动它,步骤如下:
res\in.txt
和一个用于输出:res\out.txt
build.xml
使用所需的目标创建一个(这只是一个示例):
<project basedir="." default="run" name="Tests">
<target name="clean">
<delete dir="bin"/>
</target>
<target name="compile">
<mkdir dir="bin"/>
<javac srcdir="src" destdir="bin" includeantruntime="false"/>
</target>
<target name="build" depends="clean,compile"/>
<target name="run" depends="build">
<java classname="Main" input="res\in.txt" output="res\out.txt" classpath="bin" />
</target>
</project>
在Eclipse中转到:Run->External Tools->External Tools Configurations->Ant Build-> New Launch Configuration
使用以下配置:
Section Main
构建文件: ${workspace_loc:/Tests/build.xml}
基本目录: ${workspace_loc:/Tests}
*注意:Tests是我的Eclipse项目的名称
现在,您可以通过单击“运行外部”工具栏按钮来运行项目,并根据需要更改输入或输出文件