在这种情况下,如何将特殊字符添加到文件名

时间:2016-11-24 12:06:29

标签: java

在存储文件之前,我正在检查文件名是否已存在(以防止覆盖)

为此,我使用以下代码

Strings

我得到的输出是

import java.io.File;
import java.util.ArrayList;
import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Test {
    public static void main(String[] args) {
        String imagename = checkImage("big_buck_bunny.mp4");
        System.out.println(imagename);
    }

    public static String checkImage(String image_name) {
        String newimage = "";
        ArrayList<String> image_nameslist = new ArrayList<String>();
        File file = new File("C:\\Users\\Public\\Videos\\Sample Videos\\");
        File[] files = file.listFiles();
        for (File f : files) {
            image_nameslist.add(f.getName());
        }
        long l = System.currentTimeMillis();
        if (image_nameslist.contains(image_name)) {
            Random randomGenerator = new Random();
            int randomInt = randomGenerator.nextInt(100);
            Matcher matcher = Pattern.compile("(.*)\\.(.*?)").matcher(image_name);
            if (matcher.matches()) { // <== test input filename is OK?
                newimage = String.format("%s_%d.%s", matcher.group(1),randomInt, matcher.group(2));
            }
        }
        else {
            newimage = image_name;
        }
        return newimage;
    }
}

在上面的代码中代替randomInt,是否可以在前后添加一些特殊字符,以便输出看起来像\

big_buck_bunny_50.mp4

1 个答案:

答案 0 :(得分:1)

使用随机整数形成一个包含特殊字符的字符串,然后将其包含在String.format()的调用中。我对您的调用所做的唯一更改是将%d替换为%s并使用随机字符串而不是随机整数。

String randStr = "@" + String.valueOf(randomInt) + "@";
newimage = String.format("%s_%s.%s", matcher.group(1), randStr, matcher.group(2));

但是,你确定你的操作系统接受/推荐这样的文件名吗?