Как передать значение в класс из другого файла или командной строки - PullRequest
0 голосов
/ 07 марта 2019

Я написал программу Java для объединения нескольких листов Excel в один файл Excel и сгенерировал jar, и я запускаю ее, используя java -jar Merge_Excel.jar.

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Csv_Merge {
    public static void main(String[]args){
        try{

            File folder = new File("c:/test/");
            File[] listOfFiles = folder.listFiles();
            HSSFWorkbook workbook=new HSSFWorkbook();

            for (File file : listOfFiles) {


                if (file.isFile()) {

                    String thisline;
                    ArrayList<String> al = null;
                    ArrayList<ArrayList<String>> arlist = new ArrayList<ArrayList<String>>();

                    HSSFSheet sheet =  workbook.createSheet(file.getName());
                    FileInputStream fis = new FileInputStream(file);
                    BufferedReader br = new BufferedReader(new InputStreamReader(fis));

                    while ((thisline = br.readLine()) != null) {
                        al = new ArrayList<String>();
                        String strar[] = thisline.split(",");

                        for (int j = 0; j < 5; j++) {
                            for (int k = 1; k < arlist.size(); k++) {

                                ArrayList<String> ardata = (ArrayList<String>) arlist.get(k);

                                HSSFRow row = sheet.createRow((short) k);


                                for (int p = 0; p < ardata.size(); p++) {

                                    HSSFCell cell = row.createCell((short) p);
                                    cell.setCellValue(ardata.get(p).toString());

                                }
                            }

                            al.add(strar[j]);

                        }

                        arlist.add(al);
                    }

                    fis.close();
                    FileOutputStream fileOut = new FileOutputStream("c:/test/new.xls");
                    workbook.write(fileOut);

                    fileOut.flush();
                    fileOut.close();
                    br.close();
                }
            }

            System.out.println("Your excel file has been generated!");

        } catch ( Exception ex ) {
            System.out.println(ex);

        }
    }
}

Мне нужно передать путь к файлу Excel File folder = new File("c:/test/"); и путь нового объединенного файла FileOutputStream fileOut = new FileOutputStream("c:/test/new.xls"); из командной строки или из другого файла, просто путь.

Есть ли способ сделать это

Спасибо

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Вы можете передать путь к каталогу из команды при запуске jar и получить доступ к этому каталогу в основной java-программе, просто выполнив следующие шаги:

1) java -jar program-name.jar c: / test /

2)

public static void main(String[]args) {
         String folderName = args[0];
         File folder = new File(folderName);
         File[] listOfFiles = folder.listFiles();
    }
0 голосов
/ 07 марта 2019

Что ж, один из способов сделать это, используя аргументы командной строки, передать этот путь главной функции, и вы должны быть хороши.

...