当你想获得某一目录下的所有的目录时,使用系统的JNDI就可以帮你拿到所有的目录
package com.bihua.test;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;
public class TestWindowsJNDI {
public static void main(String[] args) {
//实例化Hashtable集合,参数都放String类型
Hashtable<String, String> environment = new Hashtable<String, String>();;
//windows中有一个工厂 初始化上下文工厂
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
//2.指定目录
environment.put(Context.PROVIDER_URL, "file:///d:\\桌面文件\\桌面");
//获取某个文件夹下所有的文件和文件夹
try {
//示例化Context上下文 参数中放
Context context=new InitialContext(environment);
//获得所有的目录时,list中不要写东西,返回的是NamingEnumeration<NameClassPair>
NamingEnumeration<NameClassPair> namingEnumeration=context.list("");
int i=0;
//判断有很多的话,遍历集合,进行拿值
while(namingEnumeration.hasMore()){
i++;
NameClassPair nameClassPair=namingEnumeration.next();
System.out.println(nameClassPair.getName()+" : "+nameClassPair.getClassName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
关于com.sun.jndi.fscontext.FSContext这个值的拿法,请查看
WindowsJNDI对文件用BufferedReader进行读取这篇博客
有不好的地方请多指教