这个是java的一个工具类
主要完成一下工作
1、遍历一个路径得到该路径下所有文件的全路径
2、根据一个路径得到文件的内容(txt,html等等)
3、将文件路径和内容封装在一个方法中以供调用
package com.util.tool;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class ReadFileContent {
public static String CHARSET = "utf-8";// 读取文件时的字符集
public static String ROWEND = "\r\n";// 读取一行文件之后的换行符
/**
* @param args
*/
// public static void main(String[] args) {
// List<String> s = new ArrayList<String>();
// HtmlScript html = new HtmlScript();
// getFileList(s, "F:\\Eclipse Test File\\getContent\\");// 对s进行操作,最后处理的结果为:s具有所有的文件列表
// // System.out.println(s);
// List<String[]> contentList = getContent(s);// 将路径列表传入,返回该路径列表对应的所有路径,文件内容的数组
//
// for (String[] cell : contentList) {
// System.out.println("############################");
// System.out.println(cell[0]);
// System.out.println(html.delHTMLTag((cell[1])));
// System.out.println("############################");
// }
// }
/**
* 传入一个List,将该文件夹下所有的文件递归放入list
*
* @param list
*/
public static void getFileList(List<String> list, String path) {
File f = new File(path);
if (f.isDirectory()) {
// 如果是文件夹,则遍历该文件夹下的所有子文件
File[] fl = f.listFiles();
for (File subFile : fl) {
getFileList(list, subFile.getPath());
}
} else {
// 如果不是文件夹,则将该文件放入list
list.add(f.getPath());
}
}
/**
* 传入一个文件路径+文件名列表,将其对应的内容读取出,返回的结果为List<String[2]>型
* 其中String[0]=filePath+fileName文件路径,而String[1]为文件内容
*
* @param list
* @return
*/
public static List<String[]> getContent(List<String> list) {
List<String[]> result = new ArrayList<String[]>();
for (String path : list) {
String content = getContentByPath(path);// 获取文件内容
String[] cell = new String[] { path, content };// String[0]=filePath+fileName,String[1]为文件内容
result.add(cell);
}
return result;
}
/**
* 传入一个路径,将该文件的内容读取出
*
* @param path
* @return
*/
public static String getContentByPath(String path) {
StringBuilder result = new StringBuilder();
BufferedReader br = null;
FileInputStream fis = null;
try {
// 以下提供不同的读法:
// 1、按行读,最终结果为读取所有行的数据,去除换行符,最终为一行
fis = new FileInputStream(new File(path));
br = new BufferedReader(new InputStreamReader(fis, CHARSET));
String line = null;
while ((line = br.readLine()) != null) {
result.append(line);
}
// 2、按行读,最终结果为读取所有行的数据,添加换行符,最终为多行
// fis = new FileInputStream(new File(path));
// br = new BufferedReader(new InputStreamReader(fis,CHARSET));
// String line = null;
// while((line = br.readLine())!=null){
// result.append(line).append(ROWEND);
// }
// 按字节读,最终结果为读取所有的数据,原封不动的转化为原始数据
// File f = new File(path);
// fis = new FileInputStream(f);
// byte[] bytes = new
// byte[(int)f.length()];//文件大小有限制,最大只能2^32-1字节大约等于
// byte[] buff = new byte[512];
// int count = 0;
// int point = 0;
// while((count=fis.read(buff))!=-1){
// System.arraycopy(buff, 0, bytes, point, count);
// point+=count;
// }
// result.append(new String(bytes,CHARSET));
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
if (fis != null)
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result.toString();
}
}