1.读取目录下的所有文件
隐藏的文件一网打尽,快速定位要找的那个文件
/**
* 查询路径下的所有文件
* @param path 路径
*/
private static void find(String path){
File file = new File(path);
File[] files = file.listFiles();
if(files!=null){
for (File f : files) {
if (!f.isDirectory()){
//如果是文件,输出文件名
System.out.println("文件:" + f.getAbsolutePath());
}else{
System.out.println("目录:" + f.getAbsolutePath());
//如果是目录,递归调用,查找子目录
find(f.getAbsolutePath());
}
}
}
}
public static void main(String[] args) {
find("E:\\log");
}
2.读取目录下的所有文件,并对指定类型的文件进行操作
读取E:\log下的所有文件,并对txt格式的文件在桌面打开或打印在控制台
/**
* 查询路径下的所有文件并打印出指定类型的文件
* @param path 路径
* @param fileType 文件类型
* @param operateType 操作方式 0打印控制台 1打开文件
*/
private static void find(String path,String fileType,String operateType){
File file = new File(path);
File[] files = file.listFiles();
if(files!=null){
for (File f : files) {
if (!f.isDirectory()){
//如果是文件,输出文件名
System.out.println("文件:" + f.getAbsolutePath());
if (fileType.equals(getFileExtension(f.getName()))) {
if ("0".equals(operateType)) {
read(f.getAbsolutePath());
} else {
openFile(f);
}
}
}else{
System.out.println("目录:" + f.getAbsolutePath());
//如果是目录,递归调用,查找子目录
find(f.getAbsolutePath(),fileType,operateType);
}
}
}
}
/**
* 读取文件内容
* @param path 路径
*/
private static void read(String path){
try(FileInputStream in = new FileInputStream(path)){
//创建字节数组
byte[] buffer = new byte[300];
//每次读取长度
int length = 0;
//循环将数据读取到字节数组中,到末尾位置
while ((length = in.read(buffer))!=-1){
String str = new String(buffer,0,length);
System.out.println(str);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 根据文件名获取文件扩展名
* @param fileName 文件名
* @return
*/
private static String getFileExtension(String fileName) {
if (fileName == null) {
return null;
}
int lastPosDot = -1;
String ret = null;
if ((lastPosDot = fileName.lastIndexOf(".")) > 0) {
ret = fileName.substring(lastPosDot + 1);
}
return ret;
}
/**
* 打开文件
* @param file 文件
*/
private static void openFile(File file){
if(!Desktop.isDesktopSupported()){
return;
}
Desktop desktop = Desktop.getDesktop();
if(file.exists()) {
try {
desktop.open(file);
} catch (IOException e) {
System.out.println("openFile:"+e.getMessage());
}
}
}
public static void main(String[] args) {
//把txt文件打印在控制台
find("E:\\log", "txt", "0");
//把txt文件在电脑桌面上打开
find("E:\\log", "doc", "1");
}