有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用作为主参数传递的文件初始化程序(system.getProperty())

我必须用这行代码执行我的程序:

java -DImport=data.txt -Din=input.dat -Dout=output1.dat main.Main

我一直想弄明白怎么做,但没能真正让它工作。我之所以使用Netbeans,是因为我不太熟悉unix终端类路径等等

public static void main(String[] args) {    
    String fileIn;
    fileIn = System.getProperty ("Import");
}

由于前面的语句,fileIn正在变为null

我只是从-DImport=data开始。txt,在我解决它后,我将尝试其他


那部分已经完成了,谢谢。我将尝试将stdin设置为-Din文件而不是键盘。谢谢


我照你们说的做了CartonFox,它的打印导入为空,这意味着fileIn并没有从系统接收任何字符串。getProperty(“导入”)

我也收到了这样的警告:

警告:[弃用]java中的readLine()。木卫一。DataInputStream已被弃用 行=dis。readLine()

我正在使用此页面中的代码:http://www.java-tips.org/java-se-tips/java.io/how-to-read-file-in-java.html,因为我不太了解读者:(


共 (3) 个答案

  1. # 1 楼答案

    我认为你混淆了两个概念:

    • Javaargs引用在类名之后传递的参数。因此,如果你打电话:

    java main.MyMain 0 1 2

    您的参数将是:

    args[0] = 0

    args[1] = 1

    args[2] = 2

    • Java属性是您在-DImport=data中使用-D传递的内容。txt

    在代码中,您将两者混合。拆下线路

    if (args.length == 1)

    它将起作用:)

  2. # 2 楼答案

    删除if (args.length == 1),因为您不是在分析参数,而是在设置系统属性

    程序参数跟在主类后面,如下所示

    main.Main arg1=val arg2=val2
    
  3. # 3 楼答案

    将-Import=foo作为将“导入”配置选项设置为值“foo”的一种方式

    只需删除if语句:

    public static void main(String[] args) {
    
    String fileIn;
    fileIn = System.getProperty ("Import");
    System.out.println("Import "+fileIn);
    }
    

    顺便说一句,我认为Sun选择了-D(而不是其他东西),因为许多C编译器允许您在命令行上使用-D设置宏,这意味着这是在命令行上设置命名“常量”的一种方式。。。这与它在Java中的功能类似

    我不知道为什么运行这个程序会得到null,所以这里是我编译它并运行它的一个记录本-带有输出你必须在这份成绩单中看看你在做什么和我在做什么之间的区别:

    Script started on Sat Nov  7 18:16:25 2009
    bash-3.2$ cat T.java
    public class T {
    
    public static void main(String[] args) {
    
    String fileIn;
    fileIn = System.getProperty ("Import");
    System.out.println("Import "+fileIn);
    }
    }
    bash-3.2$ javac T.java
    bash-3.2$ java -DImport=data.txt -Din=input.dat -Dout=output1.dat T
    Import data.txt
    bash-3.2$ exit
    exit
    
    Script done on Sat Nov  7 18:17:07 2009