Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows命令行上,如何将cat的输出输入到java主方法中?_Java_Windows_Command Line Arguments_Command Prompt - Fatal编程技术网

在Windows命令行上,如何将cat的输出输入到java主方法中?

在Windows命令行上,如何将cat的输出输入到java主方法中?,java,windows,command-line-arguments,command-prompt,Java,Windows,Command Line Arguments,Command Prompt,我不知道如何让命令行命令“cat”和我的普通Java程序在Windows命令行中协同工作。与Linux中常见的使用方式相同: cat *.* | grep stackoverflow 我想在Windows中执行此操作: cat inputfile.txt | java Boil 但我不能让猫喂它。正如您在下面所看到的,命令行命令“cat”工作正常,如果我以“javabowlethearparameters”的格式提供参数,Boil程序工作正常 java代码 // Boil down line

我不知道如何让命令行命令“cat”和我的普通Java程序在Windows命令行中协同工作。与Linux中常见的使用方式相同:

cat *.* | grep stackoverflow
我想在Windows中执行此操作:

cat inputfile.txt | java Boil
但我不能让猫喂它。正如您在下面所看到的,命令行命令“cat”工作正常,如果我以“javabowlethearparameters”的格式提供参数,Boil程序工作正常

java代码

// Boil down lines of input code to just ;{}( and )
//          and enjoy seeing the patterns
public class Boil {
    public static void main(String[] args) {
        int outputCounter = 0;
        for (int i = 0; i < args.length; i++) {
            for (int j = 0; j < args[i].length(); j++) {
                if (args[i].charAt(j) == ';' 
                        || args[i].charAt(j) == '(' 
                        || args[i].charAt(j) == ')' 
                        || args[i].charAt(j) == '{' 
                        || args[i].charAt(j) == '}') {
                    System.out.print(args[i].charAt(j));
                    outputCounter++;
                    if (outputCounter >= 80) {
                        System.out.print("\n");
                        outputCounter = 0;
                    }
                }   
            }
        }
    }
}    
//将输入代码的行缩减为;{}(和)
//喜欢看这些图案
公务舱{
公共静态void main(字符串[]args){
int outputCounter=0;
对于(int i=0;i=80){
系统输出打印(“\n”);
输出计数器=0;
}
}   
}
}
}
}    
我知道这可以更好地优化:)

从我的C:\Windows\System32\cmd.exe“Administrator:cmd.exe”Windows命令行窗口,运行在具有Windows 7 Professional SP1 32位操作系统的计算机上:

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Windows\System32>cd ../../workspace1/Boil/bin

C:\workspace1\Boil\bin>ls
Boil.class     inputfile.txt

C:\workspace1\Boil\bin>cat inputfile.txt
This is a sample text file() with {
        multiple lines!;
}
C:\workspace1\Boil\bin>java Boil this should print nothing

C:\workspace1\Boil\bin>java Boil this should print a semicolon; ok?
;
C:\workspace1\Boil\bin>java Boil test all good chars ;(){}
;(){}
C:\workspace1\Boil\bin>cat inputfile.txt | java Boil

C:\workspace1\Boil\bin>java Boil < inputfile.txt

C:\workspace1\Boil\bin>java Boil < cat inputfile.txt
The system cannot find the file specified.

C:\workspace1\Boil\bin>cat inputfile.txt > java Boil
cat: Boil: No such file or directory

C:\workspace1\Boil\bin>dir
 Volume in drive C is OS
 Volume Serial Number is 0666-2986

 Directory of C:\workspace1\Boil\bin

11/20/2013  04:29 PM    <DIR>          .
11/20/2013  04:29 PM    <DIR>          ..
11/20/2013  02:28 PM               864 Boil.class
11/20/2013  04:22 PM                57 inputfile.txt
11/20/2013  04:29 PM                57 java
               3 File(s)            978 bytes
               2 Dir(s)  872,764,809,216 bytes free

C:\workspace1\Boil\bin>cat java
This is a sample text file() with {
        multiple lines!;
}
C:\workspace1\Boil\bin>rm java
Microsoft Windows[版本6.1.7601]
版权所有(c)2009微软公司。版权所有。
C:\Windows\System32>cd../。/workspace1/bool/bin
C:\workspace1\Boil\bin>ls
Boil.class inputfile.txt
C:\workspace1\Boil\bin>cat inputfile.txt
这是一个示例文本文件(){
多行!;
}
C:\workspace1\Boil\bin>java Boil这应该不会打印任何内容
C:\workspace1\Boil\bin>Javaboil这应该打印一个分号;好啊
;
C:\workspace1\Boil\bin>java Boil测试所有好字符;(){}
;(){}
C:\workspace1\Boil\bin>cat inputfile.txt | java Boil
C:\workspace1\Boil\bin>java Boiljava Boilcat inputfile.txt>java Boil
cat:Boil:没有这样的文件或目录
C:\workspace1\Boil\bin>dir
驱动器C中的卷是OS
卷序列号是0666-2986
C:\workspace1\Boil\bin目录
2013年11月20日下午4:29。
2013年11月20日下午4:29。。
2013年11月20日02:28 PM 864.class
2013年11月20日04:22 PM 57 inputfile.txt
2013年11月20日04:29下午57:00爪哇
3个文件978字节
2个目录872764809216字节可用
C:\workspace1\Boil\bin>cat java
这是一个示例文本文件(){
多行!;
}
C:\workspace1\Boil\bin>rm java

非常感谢您的任何想法。提前感谢您。

您应该从标准输入流中读取,而不是尝试将行作为参数读取

try {
    BufferedReader br = 
                  new BufferedReader(new InputStreamReader(System.in));

    String input;

    while((input = br.readLine()) != null){
        System.out.println(input);
    }

} catch (IOException io){
    io.printStackTrace();
}   

管道意味着将输出流(STDOUT)作为STDIN传递给另一个命令。在本例中,bool或grep都可以获取任何参数。

您应该从标准输入流中读取,而不是尝试将行作为参数读取

try {
    BufferedReader br = 
                  new BufferedReader(new InputStreamReader(System.in));

    String input;

    while((input = br.readLine()) != null){
        System.out.println(input);
    }

} catch (IOException io){
    io.printStackTrace();
}   

管道意味着将输出流(STDOUT)作为STDIN传递给另一个命令。在本例中,BOOL或grep获取任何参数。

如果您的命令是
JavaBOOL
,则没有参数。因此,循环中的任何代码都不会执行。您试图让
cat
命令将其输出输入到命令的参数中,但在Windows中无法这样做。(在Unix/Linux上使用
|
也不能做到这一点。必须使用反勾号来完成这一点。但Windows不支持反勾号。)

(请注意,您在Linux上发出的命令:

cat *.* | grep stackoverflow

没有像你想象的那样。在模式“
stackoverflow
”之后,
grep
希望看到要搜索的文件的文件名,如果没有,则使用标准输入。
通过管道将
cat
的输出传输到
grep
的标准输入,而不是命令行参数。不能使用此命令将
cat
的输出用作
grep
的模式[除非有办法使用
-f
选项进行此操作])

如果您的命令是
java Boil
,则没有参数。因此,循环中的任何代码都不会执行。您试图让
cat
命令将其输出输入到命令的参数中,但在Windows中无法这样做。(在Unix/Linux上使用
|
也不能做到这一点。必须使用反勾号来完成这一点。但Windows不支持反勾号。)

(请注意,您在Linux上发出的命令:

cat *.* | grep stackoverflow

没有像你想象的那样。在模式“
stackoverflow
”之后,
grep
希望看到要搜索的文件的文件名,如果没有,则使用标准输入。
通过管道将
cat
的输出传输到
grep
的标准输入,而不是命令行参数。不能使用此命令将
cat
的输出用作
grep
的模式[除非有某种方法可以使用
-f
选项])

非常感谢,这是有效的。命令行现在显示如下:C:\workspace1\Boil\src>cat inputfile.txt | java Boil------命令行输出--------------------------({;}非常感谢,这是有效的。命令行现在显示如下:C:\workspace1\Boil\src>cat inputfile.txt | java Boil------命令行输出-----------------(){;}