pom
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
代码
package com.sci.web.system.controller;
import com.sci.common.core.controller.BaseController;
import com.sci.common.core.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.sourceforge.pinyin4j.PinyinHelper;
import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
import org.springframework.web.bind.annotation.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
@SuppressWarnings({"DefaultAnnotationParam", "PointlessBooleanExpression"})
@Api(value = "glzz菜单", tags = {"glzz菜单API"})
@RestController
@RequestMapping("/system/glzzMenuCopy")
@Slf4j
public class TGlzzMenuCopyController extends BaseController {
@ApiImplicitParams({
@ApiImplicitParam(name = "directoryPath", value = "文件地址", required = false, paramType = "query"),
})
@ApiOperation("读取目标文件夹下文件并全部转为pinyin")
@GetMapping("/changeNameToPinyin")
public AjaxResult changeNameToPinyin(
@RequestParam(value = "directoryPath", required = false) String directoryPath
) {
renameIconsInDirectory(directoryPath);
return success();
}
public static void renameIconsInDirectory(String directoryPath) {
File directory = new File(directoryPath);
if (!directory.exists() || !directory.isDirectory()) {
System.out.println("Directory does not exist or is not a directory: " + directoryPath);
return;
}
File[] files = directory.listFiles((dir, name) -> name.endsWith(".png"));
if (files != null) {
for (File file : files) {
String originalName = file.getName();
String newName = renameIcon(originalName);
File newFile = new File(directory, newName);
try {
Files.move(file.toPath(), newFile.toPath());
System.out.println("Renamed: " + originalName + " to " + newName);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
private static String renameIcon(String originalText) {
StringBuilder pinyinBuilder = new StringBuilder();
char[] chars = originalText.toCharArray();
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE);
format.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (char c : chars) {
if (Character.toString(c).matches("[\\u4e00-\\u9fa5]+")) {
try {
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c, format);
if (pinyinArray != null) {
pinyinBuilder.append(pinyinArray[0]);
}
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyinBuilder.append(c);
}
}
return pinyinBuilder.toString();
}
}