2014-11-09 117 views
2

嘿,我是相当新的这个,但我想不硬编码一个文件被读入,但我想从终端/命令提示符读取它。这是我到目前为止,我在bufferedWriter中硬编码的文件名,但我怎么能做到我可以做一个命令,如(Java主< in.txt> out.txt)。提前致谢。如何从终端读取文本文件并将输出保存到java中的另一个文件?

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(); 
    } 
} 

回答

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]代码。

+0

那么为什么我不能使用“<" or ">”?是不是你如何让程序读取文件并将结果输出到其他文件中?此外,当我把System.in或System.out它给了我一个错误,说它不适用。 – King11 2014-11-09 07:27:00

+0

@Rod当您使用“<'' or ''>”时,*操作系统会重定向[Standard Streams](http://en.wikipedia.org/wiki/Standard_streams#1995:_Java)stdin和stdout(例如'System。在Java中是'in'和'System.out')。 – 2014-11-09 07:29:01

+0

好吧,那么我可以在我的代码中更改哪些内容以允许使用System.in和System.out?我尝试了不同的事情,但是我得到一个错误或者我试图卡住。 – King11 2014-11-09 07:33:15

0

System.in中读取并写入System.out - 还记得您写入System.out的任何内容都将写入该文件。如Done tokenizing file: + inFile

相关问题