文件内容重定向到args不起作用

时间:2016-11-05 16:09:25

标签: java redirect console pipeline args

我正在测试一些我需要在Java学校项目中实现的代码。

public class Prova {
    public static void main(String[] args){
       System.out.println(args.length);

       for(int i = 0; i < args.length; i++){
           System.out.print(args[i]);
       }

       System.out.print("\nEnd!");
    }
}

java Prova < test.dot文件的内容为:{/ p>时,我输入控制台test.dot

digraph G1 {
c -> e;
a -> e;
a -> f;
f -> b;
g;
}

我得到这个:

C:\Users\Lorenzo\workspace\Progetto_ASD\bin>java Prova < test.dot
0

End!

我尝试java Prova > output.txt只是为了查看管道是否正常工作(我得到与上面相同但在文件中)。

如果我尝试type test.dot,我会:

C:\Users\Lorenzo\workspace\Progetto_ASD\bin>type test.dot
digraph G1 {
c -> e;
a -> e;
a -> f;
f -> b;
g;
}

正如我所料。

我真的不知道我在做什么(我正在使用Windows)。

2 个答案:

答案 0 :(得分:1)

您正在混合两种不同的方法:

  1. args

    您应该以{{1​​}}:

    运行该程序
      

    java Prova arg1 arg2 ... argn

    可能你想改变

    java Prova "digraph G1 {" "c -> e;" "a -> e;" "a -> f;" "f -> b;" g; }

    System.out.print(args[i]);
    

    有7个不同的行。

  2. <强>重定向

    这相当于一个接受键盘输入的程序。您可以将程序更改为:

    System.out.println(args[i]);
    

    然后致电

      

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Prova { public static void main(String[] args) { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line; try { while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }

答案 1 :(得分:-1)

你正在读文件吗? 所以你需要了解更多关于java.io.FileInputStream

的信息

这是一个代码可以帮助你的例子 https://www.mkyong.com/java/how-to-read-file-in-java-fileinputstream

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class ReadFileExample {

    public static void main(String[] args) {

        File file = new File("C:/robots.txt");
        FileInputStream fis = null;

        try {
            fis = new FileInputStream(file);

            System.out.println("Total file size to read (in bytes) : "
                    + fis.available());

            int content;
            while ((content = fis.read()) != -1) {
                // convert to char and display it
                System.out.print((char) content);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fis != null)
                    fis.close();
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
    }
}

ps:您需要关闭流并释放任何资源以进行良好实践。