到目前为止,我有一个图像列表,我想根据从数据库中获取的信息重命名它们。
图片列表:
IBImages = ["foo1", "foo2", "foo3"]
private static void buildTheme(ArrayList<String> IBImages) {
String bundlesPath = "/a/long/path/with/dest/here";
for (int image = 0; image < IBImages.size(); image++) {
String folder = bundlesPath + "/" + image;
File destFolder = new File(folder);
// Create a new folder with the image name if it doesn't already exist
if (!destFolder.exists()) {
destFolder.mkdirs();
// Copy image here and rename based on a list returned from a database.
}
}
}
您从数据库获得的JSON可能看起来像这样。我想将我拥有的一个图像重命名为icon_names列表中的所有名称
{
"icon_name": [
"Icon-40.png",
"Icon-40@2x.png",
"Icon-40@3x.png",
"Icon-Small.png",
"Icon-Small@2x.png",
]
}
答案 0 :(得分:2)
您不能一次将具有相同名称的文件放入目录。您需要复制文件一次并重命名,或者使用新名称创建空文件并将原始文件中的位复制到其中。使用Files
类及其copy(source, target, copyOptions...)
方法,第二种方法非常简单。
以下是将位于images/source/image.jpg
的一个文件复制到image/target
目录中的新文件,同时为其提供新名称的简单示例。
String[] newNames = { "foo.jpg", "bar.jpg", "baz.jpg" };
Path source = Paths.get("images/source/image.jpg"); //original file
Path targetDir = Paths.get("images/target");
Files.createDirectories(targetDir);//in case target directory didn't exist
for (String name : newNames) {
Path target = targetDir.resolve(name);// create new path ending with `name` content
System.out.println("copying into " + target);
Files.copy(source, target, StandardCopyOption.REPLACE_EXISTING);
// I decided to replace already existing files with same name
}