在控制台中执行run命令时,如何为java程序提供外部文件?

在控制台中执行run命令时,如何为java程序提供外部文件?,java,execution,Java,Execution,所以这似乎是一个微不足道的问题,但我找不到任何信息来回答我的问题。尽管如此,这是一个非常普遍的编码问题 假设您有一个java程序,它读取一个文件并根据该文件提供的信息创建一个数据结构。所以你会: javac javaprogram.java java javaprogram 很简单,但我想在这里为程序提供命令行中指定的文件,如下所示: javac javaprogram.java java javaprogram -file java javaprogram /foo/bar/file.tx

所以这似乎是一个微不足道的问题,但我找不到任何信息来回答我的问题。尽管如此,这是一个非常普遍的编码问题

假设您有一个java程序,它读取一个文件并根据该文件提供的信息创建一个数据结构。所以你会:

javac javaprogram.java
java javaprogram
很简单,但我想在这里为程序提供命令行中指定的文件,如下所示:

javac javaprogram.java
java javaprogram -file
java javaprogram /foo/bar/file.txt
我需要写什么代码来总结这个问题?
谢谢。

您可以通过两种方式将文件路径作为参数传递:

(一)


2) 使用

最简单的方法是使用-D,因此如果您有一些文件,可以调用

java -Dmy.file=file.txt javaprogram
在程序内部,您可以使用
System.getProperty(“my.file”)
读取它

或者你可以使用第三方工具,比如


让我们一步一步走。首先,需要将文件路径传递给程序。 假设您这样执行程序:

javac javaprogram.java
java javaprogram -file
java javaprogram /foo/bar/file.txt
“javaprogram”后面的字符串将作为参数传递给您的程序。这就是主方法语法背后的原因:

public static void main(String[] args) {
 //args is the array that would store all the values passed when executing your program
 String filePath = args[0]; //filePath will contain /foo/bar/file.txt
}
现在,您可以从命令行获取文件路径和名称的详细信息,您需要打开并读取文件

看看File类和FileInputStream类。

这应该让你开始

祝你好运

目前最好的Java命令行实用程序库之一是

基于线程描述的一个简单实现是:

公共类javaprogram{
@参数(名称={“-file”})
字符串文件路径;
公共静态void main(字符串[]args){
//实例化主类
javaprogram=新的javaprogram();
//初始化JCommander并解析输入参数
JCommander.newBuilder().addObject(program.build().parse(args);
//使用现在可通过“文件路径”字段访问的文件路径
}
}
在编译javaprogram.java类文件时,应该确保库jar在类路径下可用

否则,如果在程序参数周围不需要实用程序,可以保持程序条目足够简单,将文件路径作为原始程序参数读取:

公共类javaprogram{
私有静态最终字符串文件_开关=“-FILE”;
公共静态void main(字符串[]args){
if((args.length==2)和&(FILE_SWITCH.equals(args[0])){
最终字符串filePath=args[1];
//使用现在可以通过“filePath”局部变量访问的文件路径
}
}
}

main方法的
String[]args
参数中显示的在命令行上传递的所有内容。可能感兴趣的JCommander的更新/现代替代方法是。如何提供实际文件名并调用来运行命令行应用程序?我收到一个错误,即没有可用的
Sample()
类。@对于响应延迟,我深表歉意,但我在年初非常忙。这如果功能齐全,我就不会出错,如果出了问题就告诉我。这在当时就解决了,不用担心。
public static void main(String[] args) {
 //args is the array that would store all the values passed when executing your program
 String filePath = args[0]; //filePath will contain /foo/bar/file.txt
}