如何将值从另一个文件或命令提示符传递给类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将值从另一个文件或命令提示符传递给类相关的知识,希望对你有一定的参考价值。

我编写了一个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");的位置。

有没有办法做到这一点

谢谢

答案

您可以在运行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();
    }
另一答案

那么通过将该路径传递给main函数使用命令行参数来实现它的方法之一就是你应该是好的。

以上是关于如何将值从另一个文件或命令提示符传递给类的主要内容,如果未能解决你的问题,请参考以下文章

如何将值从一个片段的回收器视图项传递到另一个片段

如何将值从其他活动传递给 viewpager 片段?

如何将值从一个活动中的片段传递到另一个活动? [复制]

将值从回收器适配器传递到android中的片段

如何在反应js中调用或将值从一个js文件传递到另一个文件

Objective-c:将值从 AppDelegate 传递给 UIViewController