zoukankan      html  css  js  c++  java
  • 创建文件文件名重复问题

    文件创建,输入文件需要存放的路径名称,目录不存在自动创建目录,若目录存在直接创建文件,若该文件名称的文件已经存在,这在该文件名称后追加数字序号创建文件。

     1 package com.wb.fileutils;
     2 
     3 
     4 import org.slf4j.Logger;
     5 import org.slf4j.LoggerFactory;
     6 
     7 import java.io.File;
     8 import java.io.IOException;
     9 import java.util.regex.Matcher;
    10 import java.util.regex.Pattern;
    11 
    12 public class FileUtil {
    13     //日志打印
    14     private final static Logger logger = LoggerFactory.getLogger(FileUtil.class);
    15 
    16 
    17     /**
    18      * 传入文件全路径
    19      * 创建文件,文件重复追加后缀,
    20      *
    21      * @param path
    22      */
    23     public static String createFile(String path) {
    24         int count = 1;
    25         String suffix = "";
    26         String toPrefix = "";
    27         File file = new File(path);
    28         String fileName = file.getName();
    29         if (file.exists()) {//文件存在追加后缀
    30             //获取文件后缀
    31             int index = fileName.lastIndexOf(".");
    32             if (index != -1)
    33                 suffix = fileName.substring(index);
    34             if (suffix.length() != 0) {
    35                 toPrefix = fileName.substring(0, fileName.indexOf(suffix.replace(".", "")) - 1);
    36             } else {
    37                 toPrefix = fileName;
    38             }
    39             logger.debug("文件后缀:" + ((suffix.length() > 0) ? suffix : "文件不存在后缀"));
    40             logger.debug("文件前缀toPrefix:" + toPrefix);
    41             String regex = "[(][0-9]+[)]$";
    42             Pattern pat = Pattern.compile(regex);
    43             Matcher mat = pat.matcher(toPrefix);
    44             if (mat.find()) {
    45                 String end = mat.group();
    46                 count = Integer.valueOf(end.substring(1, end.length() - 1)) + 1;
    47                 toPrefix = toPrefix.substring(0, mat.start()) + "(" + count + ")";
    48             } else {
    49                 toPrefix = toPrefix + "(" + count + ")";
    50             }
    51             return createFile(toPrefix + suffix);
    52         } else {//文件不存在创建文件
    53             try {
    54                 file.createNewFile();
    55             } catch (IOException e) {
    56                 // e.printStackTrace();
    57                 logger.error(e.getMessage());
    58             }
    59             return path;
    60         }
    61     }
    62 
    63     /**
    64      * 传入文件全路径,创建对应目录
    65      *
    66      * @param path
    67      */
    68     public static void createDirectory(String path) {
    69         File file = new File(path);
    70         String filePath = file.getPath();
    71         logger.debug(filePath);
    72         String directoryPath = "/";
    73         if (filePath.lastIndexOf("\") != -1) {
    74             directoryPath = filePath.substring(0, filePath.lastIndexOf("\"));
    75         }
    76         File directory = new File(directoryPath);
    77         logger.debug(directoryPath);
    78         //判断目录是否存在
    79         if (!directory.exists()) {
    80             //创建文件
    81             directory.mkdirs();
    82         }
    83     }
    84 
    85 
    86     public static void main(String[] args) {
    87         // for (int i = 0; i < 15; i++) {
    88         //String file = createFile("test.txt");
    89 
    90 //        System.out.println(file);
    91         //createDirectory("test.txt");
    92         //}
    93     }
    94 }
  • 相关阅读:
    Redis知识点
    MySQL InnoDB存储引擎知识点
    Java BIO、NIO 背后的理论知识
    分布式锁 & 分布式事务
    Kafka监控与JMX
    集合类源码(八)Collection之Set(HashSet, LinkedHashSet, TreeSet,ConcurrentSkipListSet)
    Kafka 基础知识
    JDK SPI 、Spring SPI、Dubbo SPI机制
    给老子爬爬爬!2019国家统计局最新城乡划分代码
    Linux系统使用教程
  • 原文地址:https://www.cnblogs.com/lingdu9527/p/11611247.html
Copyright © 2011-2022 走看看