在存储文件之前,我正在检查文件名是否已存在(以防止覆盖)
为此,我使用以下代码
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
答案 0 :(得分:1)
使用随机整数形成一个包含特殊字符的字符串,然后将其包含在String.format()
的调用中。我对您的调用所做的唯一更改是将%d
替换为%s
并使用随机字符串而不是随机整数。
String randStr = "@" + String.valueOf(randomInt) + "@";
newimage = String.format("%s_%s.%s", matcher.group(1), randStr, matcher.group(2));
但是,你确定你的操作系统接受/推荐这样的文件名吗?