我正在尝试将参数传递给方法。参数可以是文件或目录。
public class ReadCsv {
String line = null;
BufferedReader br ;
public void readCsv(String arg) throws Exception{
File file = new File(arg);
if(file.isDirectory()){
for(File dir : file.listFiles()){
System.out.println(file.getName());
reader(dir);
}
}
else{
reader(file);
}
}
public void reader(File file) throws Exception {
br = new BufferedReader(new FileReader(file));
while((line=br.readLine())!=null){
//Code
}
}
但是代码不能正常工作。当我传递参数arg
时,我必须确定它是文件还是目录并根据它工作。任何人都可以帮我如何确定文件或目录。如果arg是一个目录,我的代码运行循环4次。
答案 0 :(得分:1)
您的代码看起来很好,看起来您只是输出目录(您已命名为' file')而不是您已命名为' dir'的文件。 。
for(File dir : file.listFiles()) {
System.out.println(dir.getName()); //you were outputting file.getName()
}
答案 1 :(得分:1)
File
您可以使用isDirectory()
和isFile()
方法来检查类型。
答案 2 :(得分:1)
请参阅File官方文档。有一些方法,如:
isFile();
isDirectory();
答案 3 :(得分:1)
试试吧.. 它会打印所有目录和文件名。
如果是嵌套目录:
public class ReadCsv {
String line = null;
BufferedReader br ;
public void readCsv(String arg) throws Exception{
File file = new File(arg);
checkIsDir(file );
}
public void checkIsDir(File file) throws Exception {
if(file.isDirectory()){
System.out.println("Directory : "file.getName());
for(File dir : file.listFiles()){
checkIsDir(dir);
}
}
else{
System.out.println("File : "file.getName());
reader(file);
}
}
public void reader(File file) throws Exception {
br = new BufferedReader(new FileReader(file));
while((line=br.readLine())!=null){
//Code
}
}