'Java read file by command line, <(less than) symbol
I am trying to read the filename by the command line,
This is command that our professor wants us to type:
java MultiBinaryClient xxxxxx.edu 6001 < files.txt
I was trying to use args[3] to get the file name, but args only contains "xxxxxx.edu" and "6001". why not "<" and "files.txt" in the args[]? Can anyone help me out?
BTW, I am using MAC terminal to test my code, I believe my professor uses win CMD, will it make differences?
Thank you!
Solution 1:[1]
Let's see what each fragment means. This is how we execute a Java class containing a main method:
java MultiBinaryClient
The only command-line arguments that are being passed to your program are these ones:
xxxxxx.edu 6001
And this snippet is not part of the expected arguments to the Java program:
< files.txt
It's just Unix shell syntax to specify that the contents of files.txt must be read into your program via the standard input.
Solution 2:[2]
I know it's an old question, but I've had this problem recently. Here's what I've done to handle it:
Well, as the others said, the "<" redirects the file contents to stdin. If you want to use the file contents as program arguments, you can use xargs:
xargs -a FILE java JAVA_ARGS
or, more specifically:
xargs -a FILE java -cp CLASSPATH CLASS_WITH_MAIN_METHOD
Solution 3:[3]
< is a redirection. The file will be streaming over stdin.
Solution 4:[4]
You should escape the '<'
java MultiBinaryClient xxxxxx.edu 6001 \< files.txt
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Gabriel dos Santos |
| Solution 3 | Alex Fitzpatrick |
| Solution 4 | tianwei |
