如何知道Agment是Java中的目录还是文件
我试图将一个参数传递给一个方法。参数可以是文件或目录如何知道Agment是Java中的目录还是文件,java,file,directory,Java,File,Directory,我试图将一个参数传递给一个方法。参数可以是文件或目录 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
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次 您的代码看起来很好,看起来您只是输出了目录(您将其命名为“file”),而不是文件(您将其命名为“dir”)
for(File dir : file.listFiles()) {
System.out.println(dir.getName()); //you were outputting file.getName()
}
您的代码看起来很好,看起来您只是输出了目录(您将其命名为“file”),而不是文件(您将其命名为“dir”)
for(File dir : file.listFiles()) {
System.out.println(dir.getName()); //you were outputting file.getName()
}
File
具有可用于检查类型的isDirectory()
和isFile()
方法。File
具有可用于检查类型的isDirectory()
和isFile()
方法。参见官方文档。有以下几种方法:
isFile();
isDirectory();
见正式文件。有以下几种方法:
isFile();
isDirectory();
试试看。。
它打印所有目录和文件名
如果是嵌套目录:
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
}
}
试试看。。
它打印所有目录和文件名
如果是嵌套目录:
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
}
}
在readCsv方法中,您已经拥有了所需的功能(即File#isDirectory),这不是很有趣吗?您的ARG是DIR than,1>该DIR下可能有其他目录2>您确定DIR(if is directory)下的所有目录都是File。对于第一种情况,我已经发布了我的答案。有趣的是,您已经在readCsv方法中拥有了所需的功能(即File#isDirectory)?您的参数是DIR than,1>该DIR下可能有其他目录2>您确定DIR(if is directory)下的所有目录都是File。对于第一种情况,我已经发布了我的答案。这是一个代码改进(包括嵌套目录),它碰巧修复了问题中的错误(多次输出目录名),没有解释。所以这并不是一个真正的答案。
@Ross..
我已经在问题下做了评论,用于嵌套目录。现在也在这里进行一些编辑。感谢这是一个代码改进(包括嵌套目录),它碰巧修复了有问题的错误(多次输出目录名),而无需解释。所以这并不是一个真正的答案。@Ross..
我已经在问题下做了评论,用于嵌套目录。现在也在这里进行一些编辑。谢谢正如ankit337所说,它不是递归的,所以不会处理嵌套目录。同样,正如ankit337所说,它不是递归的,所以不会处理嵌套目录。