怎么根据sql写批量下载按照顺序创建文件夹

根据客户名-项目名-附件 这种形式创建文件夹存立面 进行判断有同名的文件后面+1 2 ...

img

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.LinkedHashMap;
import java.util.Map;

public class Main01 {

    private static final String DRIVER = "com.mysql.jdbc.Driver";
    private static final String URL = "jdbc:mysql://<MySQL服务器ip地址>/<数据库名>";
    private static final String USER = "<用户名>";
    private static final String PASS = "<用户密码>";
    private static final String QUERY_SQL = "select * from company";

    private static final File BASE_DIR = new File("<你要保存的目录路径>");

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        Class.forName(DRIVER);
        Connection conn = DriverManager.getConnection(URL, USER, PASS);

        Map<String, Integer> fileNameMap = new LinkedHashMap<String, Integer>();
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(QUERY_SQL);
        String orgFileName = null;
        String fileName = null;
        int idx = 0;
        File file = null;
        InputStream is = null;
        OutputStream os = null;

        final int bufferSize = 1024;
        byte[] buffer = new byte[bufferSize];
        int readCount = 0;

        while (rs.next()) {
            orgFileName = rs.getString("file_name");
            fileName = String.format("%s-%s-%s", rs.getString("COMPANY_NAME"), rs.getString("branch_name"),
                    orgFileName);
            if (!fileNameMap.containsKey(fileName)) {
                fileNameMap.put(fileName, 0);
            } else {
                idx = fileNameMap.get(fileName) + 1;
                fileNameMap.put(fileName, idx);
            }

            idx = fileNameMap.get(fileName);
            if (idx > 0) {
                int index = fileName.lastIndexOf(".");
                String ext = fileName.substring(index + 1);
                fileName = String.format("%s(%d).%s", fileName.substring(0, index), idx, ext);
            }

            file = new File(BASE_DIR, fileName);
            is = rs.getBinaryStream("doc_binary");
            os = new FileOutputStream(file);

            while ((readCount = is.read(buffer, 0, bufferSize)) > 0) {
                os.write(buffer, 0, readCount);
                os.flush();
            }

            os.close();
            is.close();
        }

        rs.close();
        stmt.close();
        conn.close();
    }
}