读取文件夹下的所有文件名和文件内容
1. 读取指定目录下的每一个文件的文件名和文件内容
2. 并把文件名作为key,文件内容为value 存储在map集合中
3. 通过遍历map集合拿到我们需要的文件名和文件内容
**
/**
* Java读取文件夹下的所有文件名和文件
* @author Younger
*
*/
public class ReadFile {
public static void main(String[] args) {
Map<String, String> map = getFilesDatas("E:\\a");
for(String key : map.keySet()){
String value = map.get(key);
System.out.println("文件名:"+key+" 内容:"+value);
}
}
/**
* 获取某文件夹下的文件名和文件内容,存入map集合中
* @param filePath 需要获取的文件的 路径
* @return 返回存储文件名和文件内容的map集合
*/
public static Map<String, String> getFilesDatas(String filePath){
Map<String, String> files = new HashMap<>();
File file = new File(filePath); //需要获取的文件的路径
String[] fileNameLists = file.list(); //存储文件名的String数组
File[] filePathLists = file.listFiles(); //存储文件路径的String数组
for(int i=0;i<filePathLists.length;i++){
if(filePathLists[i].isFile()){
try {//读取指定文件路径下的文件内容
String fileDatas = readFile(filePathLists[i]);
//把文件名作为key,文件内容为value 存储在map中
files.put(fileNameLists[i], fileDatas);
} catch (IOException e) {
e.printStackTrace();
}
}
}
return files;
}
/**
* 读取指定目录下的文件
* @param path 文件的路径
* @return 文件内容
* @throws IOException
*/
public static String readFile(File path) throws IOException{
//创建一个输入流对象
InputStream is = new FileInputStream(path);
//定义一个缓冲区
byte[] bytes = new byte[1024];// 1kb
//通过输入流使用read方法读取数据
int len = is.read(bytes);
//System.out.println("字节数:"+len);
String str = null;
while(len!=-1){
//把数据转换为字符串
str = new String(bytes, 0, len);
//System.out.println(str);
//继续进行读取
len = is.read(bytes);
}
//释放资源
is.close();
return str;
}
}
运行结果如图所示:
其中文件目录所示: