Eclipse Oxygen中如何实现终端式文件输入输出重定向?
在Eclipse中实现终端输入输出重定向的正确方法
我之前也碰到过类似的问题,Eclipse的Run Configurations重定向设置确实有几个容易踩的坑,下面给你两种可行的解决方法:
方法一:通过Run Configurations的Common标签正确配置(推荐)
这是最贴近终端命令逻辑的方式,你之前的问题大概率是路径设置不对或者选项勾选冲突导致的,按以下步骤操作:
- 打开Run Configurations,找到你对应的程序配置(如果是Java程序就是Java Application类型)。
- 先确认Arguments标签页里的程序参数
--stack -b ship -e shot -c --output W已经正确配置,这部分你已经做好了,没问题。 - 切换到Common标签页,定位到Standard Input and Output区域:
- 先取消勾选Allocate console(这个选项会让程序优先读取控制台输入,和文件重定向功能冲突)。
- 勾选Input File,点击旁边的Browse按钮选择
input.txt文件。推荐用相对路径(比如${project_loc}/input.txt,Eclipse会自动解析这个变量指向项目根目录),确保文件确实放在项目根目录下,也可以直接用绝对路径。 - 勾选Output File,同样选择
output.txt,路径设置和输入文件保持一致即可。
- 点击Apply保存配置,再运行程序就可以了。
这样程序会自动读取input.txt作为输入源,把运行结果写入output.txt,不会再出现卡住或进入手动输入的状态。
方法二:在代码中手动替换输入输出流(备选方案)
如果第一种方法还是不生效,你可以直接在程序代码里指定输入输出文件,摆脱对Eclipse配置的依赖:
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileNotFoundException; import java.io.PrintStream; public class LetterMain { // 替换成你的主类名称 public static void main(String[] args) { try { // 获取项目根目录路径,拼接输入文件路径 File inputFile = new File(System.getProperty("user.dir") + "/input.txt"); System.setIn(new FileInputStream(inputFile)); // 拼接输出文件路径,替换标准输出流 File outputFile = new File(System.getProperty("user.dir") + "/output.txt"); System.setOut(new PrintStream(new FileOutputStream(outputFile))); } catch (FileNotFoundException e) { System.err.println("找不到指定的输入/输出文件:" + e.getMessage()); e.printStackTrace(); return; } // 你的原有程序逻辑代码 // ... } }
System.getProperty("user.dir")会自动获取当前Eclipse的工作目录(默认是项目根目录),这样不管项目放在哪个路径下,都能正确定位到文件。
你之前配置失败的原因解析
- 程序卡住:大概率是输入文件路径错误,程序找不到文件后会一直等待输入,导致卡住。
- 进入手动输入状态:因为勾选了Allocate console,这个选项会让程序优先监听控制台输入,即使设置了输入文件,也会被控制台输入覆盖。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

