blog2.0--保存博客文章到本地磁盘

将博客的文章根据userId保存到本地,使用随机数+日期来生成随机文件名

package com.version2.blog.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * Created by Skye on 2018/6/15.
 */
public class PathUtil {

    //将博客内容存放到D:\Java\blogArticals下面去,然后对于每个用户,都有一个具体的文件夹,
    // 存放的根路径
    public static String getBlogBasePath(){
        String blogBasePath = "D:\\Java\\blogArticals\\";
        return blogBasePath;
    }


    //根据用户userId返回博客的根路径
    public static String getBlogRelativePath(Integer userId){
        String blogRelativePath = "user\\" + userId + "\\blogs\\";
        return blogRelativePath;
    }


    //生成唯一的随机博客名  时间格式与随机数
    private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
    private static final Random random = new Random();

    //保存在classpath下的路径
    private static String basePath = Thread.currentThread().getContextClassLoader().getResource("").getPath();


    /**
     *生成随机博客名。当前日期 + 五位随机数
     * @return
     */
    private static String getRandomFileName(){
        int randomNum = random.nextInt(89999) + 10000;
        String nowTimeStr = simpleDateFormat.format(new Date());

        return nowTimeStr + randomNum;
    }


    /**
     * 传入相对路径
     * 创建目标路径上所涉及到的路径:如user\blogs\1\
     * 若其中的picture,等文件夹不存在,则创建出来
     * @param
     */
    private static void makeDirPath(String relativePath){
        //博客应该存储的绝对路径
        String realFileParentPath = getBlogBasePath() + relativePath;
        File dirPath = new File(realFileParentPath);
        if(!dirPath.exists()){
            dirPath.mkdirs();
        }
    }

    /**
     * 根据用户Id 获取相对路径,并且将文章保存到路径下,返回相对路径
     * @param artical
     * @param userId
     * @return
     */
    public static String saveArticalToDir(String artical, Integer userId){
        //获取随机的博客名
        String randomFileName = getRandomFileName();

        //获取相对路径
        String blogRelativePath = getBlogRelativePath(userId);

        //创建相对应的文件夹
        makeDirPath(blogRelativePath);

        blogRelativePath += randomFileName + ".html";
        //获取绝对路径
        String articalPath = getBlogBasePath() + blogRelativePath;

        //File file = new File(articalPath);
        FileOutputStream fileOutputStream = null;
        try {
            fileOutputStream = new FileOutputStream(articalPath, false);

            byte[] bytes = artical.getBytes();
            fileOutputStream.write(bytes, 0, bytes.length);
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fileOutputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return blogRelativePath;
    }
}

  

posted @ 2018-06-15 16:11  SkyeAngel  阅读(262)  评论(0编辑  收藏  举报