我目前正在开展一个项目,我需要一些帮助。根据用户输入,我必须从一些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?
答案 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
它写出了文件的名称。
希望这有帮助!