嘿所有我对此都比较新,但我想不要硬编码要读入的文件,但我想从终端/命令提示符读取它。以下是我到目前为止所做的,我在bufferedWriter中对文件名进行了硬编码,但是我怎样才能将其发送到我可以执行命令的地方,例如(java main< in.txt> out.txt)。提前谢谢。
public static void main(String[] args) {
String inFile = "in.txt";
String outFile = "out.txt";
if (args.length > 1) {
inFile = args[0];
outFile = args[1];
}
Lexer lexer = new Lexer(inFile);
try {
BufferedWriter writer = new BufferedWriter(new FileWriter(outFile));
Token t;
while ((t = lexer.nextToken()) != null) {
writer.write(t.toString());
writer.newLine();
}
writer.close();
System.out.println("Done tokenizing file: " + inFile);
System.out.println("Output written in file: " + outFile);
} catch (IOException e) {
e.printStackTrace();
}
}
答案 0 :(得分:4)
您没有,操作系统使用java main < in.txt > out.txt
处理IO重定向。而是从System.in
读取并写入System.out
。 或者,根据您发布的代码,您可以使用
java main in.txt out.txt
然后,您的计划将"in.txt"
收到args[0]
,"out.txt"
收取args[1]
。
答案 1 :(得分:0)
从System.in
读取并写入System.out
- 还要记住您写入System.out
的任何内容都将写入该文件。例如Done tokenizing file: + inFile