java 移动并重命名文件

背景: 新老系统数据对接,需要把老系统的附件放到新系统中,新系统的表结构和文件的存储位置与老系统都不同,存储方式也不一样。老系统是按月份存储了所有附件,并且文件是 id . 文件类型(id 是这个附件在表中记录的 id)。在新系统中,所有附件是放在了同一个文件夹,文件是 附件名称-时间戳 . 文件类型。

任务: 把附件命名规则改成新系统的规则,并且需要把同一个项目的附件放到同一个文件夹中,该文件夹的名称为项目名称。

解决步骤:
用到的 jar 包:fastjson-1.2.62.jar

1)把项目与附件的关系整理出来,调整格式,形成如下文件。

  • path:附件在老系统的位置
  • proname:项目名称
  • fileName:附件名称

在这里插入图片描述
2)写转换程序

import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class Test {
    
    
	public static void main(String[] args) {
    
    
	
		String path = Test.class.getClassLoader().getResource("oldfiles.json").getPath();
        String s = readJsonFile(path);
        JSONObject allfiles = JSON.parseObject(s);
        
        JSONArray links = allfiles.getJSONArray("alldata");

        for (int i = 0 ; i < links.size();i++){
    
    
            JSONObject datakey = (JSONObject)links.get(i);
            String filepath = (String)datakey.get("path");
            String proname = (String)datakey.get("proname");
            String fileName = (String)datakey.get("fileName");
            System.out.println(filepath);
            System.out.println(proname);
            System.out.println(fileName);
            renameFile(proname, filepath, fileName);
        }
        
		
		
		System.out.println("------------over------------");
	}
	
	// 移动文件并更改文件名称
	public static void renameFile(String proname, String path, String fileName) {
    
    
		String dirName = "E:/newattachs/" + proname;
		File dir = new File(dirName);
		if(!dir.exists()) {
    
    
			//如果该项目名称文件夹未创建,则创建
			dir.mkdir();
			System.out.println(dirName + "创建成功--------");
		}
		
		//获取旧文件
		File file = new File(path);
		String newFilename = "E:/newattachs/" + proname + "/" + fileName;
		file.renameTo(new File(newFilename));
	}
	
	// 读取json文件,返回json串
    public static String readJsonFile(String fileName) {
    
    
        String jsonStr = "";
        try {
    
    
            File jsonFile = new File(fileName);
            FileReader fileReader = new FileReader(jsonFile);

            Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
            int ch = 0;
            StringBuffer sb = new StringBuffer();
            while ((ch = reader.read()) != -1) {
    
    
                sb.append((char) ch);
            }
            fileReader.close();
            reader.close();
            jsonStr = sb.toString();
            return jsonStr;
        } catch (IOException e) {
    
    
            e.printStackTrace();
            return null;
        }
    }

}

3)确保 newattachs 文件夹已创建,执行这个 main 方法即可
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

大致步骤就这些了,具体的细节可灵活修改
如果朋友有更好的想法、更好的实现方式,还请留言指教

猜你喜欢

转载自blog.csdn.net/Alias_fa/article/details/103497450
今日推荐