Java对文件的基本操作(查找、读取)

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");
}

猜你喜欢

转载自blog.csdn.net/weixin_50989469/article/details/121848724