获取在cmd中作为输入提供的文件的名称

时间:2014-04-05 11:15:21

标签: java file-io

我目前正在开展一个项目,我需要一些帮助。根据用户输入,我必须从一些txt文件中读取一些数据。有三种方法可以调用该程序:

java Graph [-u] -s start example_graph.txt

java Graph [-u] -a example_graph.txt

java Graph [-u] -d traffic.txt

我必须阅读的文件取决于用户选择的文件:

  

clrs.txt,traffic.txt,traffic_u.txt,facebook_combined_u.txt

我用来读取和存储文件数据的方法是

public void readFile(){

    String txtFile = "filename.csv";
    BufferedReader br = null;
    String line = "";
    String txtSplitBy = ",";
    try {

        br = new BufferedReader(new FileReader(txtFile));
        while ((line = br.readLine()) != null) {
            String[] dj = line.split(txtSplitBy);
            int node_a = Integer.parseInt(dj[0]);
            int node_b = Integer.parseInt(dj[1]);
            int weight = Integer.parseInt(dj[2]);
            if (node_a > adj.size()) {
                for (int i = adj.size() + 1; i <= node_a; i++) {
                    adj.add(new HashSet<Link>());
                }
            }
            HashSet<Link> h = adj.get(node_a);
            h.add(new Link(node_b, weight));
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

但是只有当我将特定文件作为输入时,此方法才有效。既然有多个文件,我怎样才能将文件名变成String?

1 个答案:

答案 0 :(得分:0)

正如评论中所指出的,您可以从main方法的args区域中的cmd行读取参数,例如:

public class SO {
 public static void main(String[] args) {
    for(String s : args){ //For each argument
        if(s.indexOf(".") != -1){ //If contains a dot (like a file ext)
            System.out.println(s); //print
        }
    }
 }
}

使用以下方式运行时:

java SO [-u] -a example_graph.txt

它写出了文件的名称。

希望这有帮助!