Понимание командной строки jar - PullRequest
0 голосов
/ 12 февраля 2020

Итак, вот некоторые из java команд, которые будут выполнены:

java –jar myJARfile.jar –huff - c input_file output_file

java –jar myJARfile.jar –huff –d input_file output_file

java –jar myJARfile.jar –lzw - c input_file output_file

java –jar myJARfile.jar - lzw –d input_file output_file

Я хотел бы знать, как получить доступ к каждому из параметров - [huff | lzw] - [d | c] и файлам на моем главном, чтобы я мог выполнить соответствующие код. Они все считаются аргументами? Буду ли я использовать args [0], args [1], args [2], args [3] для доступа к ним? Или - [huff | lzw] - [d | c] не считаются аргументами, и если да, то как я могу получить к ним доступ?

1 Ответ

0 голосов
/ 12 февраля 2020

Для этого используется параметр args метода main () . Способ проверить это может быть:

public static void main(String args[]) {
    // Just for Testing args[]...
    for (String str : args) {
        System.out.println(arg);
    }
    System.exit(0);
    // --------------------------

    // --- Your method code here ---
}

Для различных имеющихся у вас аргументов вам нужно решить, должны ли они быть в определенном порядке c. Если нет, то вам нужно написать код для этого, вот, например, один из способов справиться с этой ситуацией:

// Class member variables (possible default values should be considered)...
private static String inputFile = "";              // Input File Path and File Name  [enclosed within quotation marks if whitespaces are in path]
private static String outputFile = "";             // Output File Path and File Name  [enclosed within quotation marks if whitespaces are in path]
private static String compressionType = "";        // Alternatives: HUFFMAN  (-huff) or  LZW        (-lzw).
private static String direction = "COMPRESS";      // Alternatives: COMPRESS (-c)    or  DECOMPRESS (-d).

// The main() method...
public static void main(String args[]) {
    // Process Command-Line Arguments provided in any order...
    for (String argument : args) {
        switch (argument.toLowerCase()) {
            case "-huff":
                compressionType = "HUFFMAN";
                continue;
            case "-lzw":
                compressionType = "LZW";
                continue;
            case "-c":
                direction = "COMPRESS";
                continue;
            case "-d":
                direction = "DECOMPRESS";
                continue;
        }

        // Source (input) and Destination (output) files...
        if (new File(argument).exists() && new File(argument).isFile()) {
            inputFile = argument;
        }
        else {
            outputFile = argument;
        }
    }
    // ------------------------------------------------

    System.out.println();
    System.out.println("Input File:       " + inputFile);
    System.out.println("output File:      " + outputFile);
    System.out.println("Compression Type: " + compressionType);
    System.out.println("Direction:        " + direction);

    // Do what you want with the variables contents ....

}
...