最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Java實現(xiàn)遍歷文件目錄并去除中文文件名

 更新時間:2024年03月18日 09:01:23   作者:愛碼少年  
這篇文章主要為大家詳細介紹了如何使用Java實現(xiàn)遍歷文件目錄并去除中文文件名,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下

一、原始需求

需要遍歷文件目錄及其子目錄,找出包含中文字符的文件名,將中文字符去除。

二、maven依賴

pom.xml

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.10</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.5</version>
		</dependency>
		
        <!--Test-->
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<version>5.5.2</version>
			<scope>test</scope>
		</dependency>

三、核心代碼

注意處理:

  • 中文路徑(如:E:/test/a/測試/b)
  • 全中文文件(如:E:/test/a/測試文本.txt)
  • 無后綴文件(如:E:/test/a/b/測試文件)
import java.io.File;
import java.util.List;
import java.util.stream.Collectors;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.RegExUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.junit.jupiter.api.Test;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class FileTest
{
    /**
     * 中文正則
     */
    private String REGEX_CHINESE = "[\u4e00-\u9fa5]";
    
    /**
     * 移除中文文件名
     */
    @Test
    public void removeChineseTest()
    {
        File dir = new File("E:\\test");
        List<File> files = FileUtils.listFiles(dir, null, true).stream().filter(f -> f.isFile()).collect(Collectors.toList());
        files.stream().forEach(file -> {
            String srcName = file.getName();
            String destName = RegExUtils.removePattern(srcName, REGEX_CHINESE);
            if (!StringUtils.equals(srcName, destName))
            {
                // 處理全中文和無后綴文件
                if (StringUtils.startsWith(destName, ".") || StringUtils.isBlank(destName))
                {
                    destName = DateFormatUtils.format(System.currentTimeMillis(), "yyyyMMdd") + destName;
                }
                
                // 文件前后綴
                String prefix = StringUtils.substringBeforeLast(destName, ".");
                String suffix = StringUtils.substring(destName, prefix.length());
                
                // 處理重名
                int index = 1;
                File destFile = new File(file.getParent() + File.separator + destName);
                while (destFile.exists())
                {
                    destName = String.format("%s_%s%s", prefix, index++, suffix);
                    destFile = new File(file.getParent() + File.separator + destName);
                }
                Boolean result = file.renameTo(destFile);
                log.info("{} ---> {}, ====== result: {}", file.getAbsolutePath(), destFile.getAbsolutePath(), result);
            }
        });
    }
}

四、運行結(jié)果

2024-03-15 19:13:37.983 [main] INFO  com.fly.files.FileTest - E:\test\a\b\_內(nèi)容20230676190031.jpg ---> E:\test\a\b\_20230676190031.jpg, ====== result: true
2024-03-15 19:13:37.986 [main] INFO  com.fly.files.FileTest - E:\test\a\文件_20230676190035.jpg ---> E:\test\a\_20230676190035.jpg, ====== result: true
2024-03-15 19:13:37.987 [main] INFO  com.fly.files.FileTest - E:\test\中文_20230676154641.jpg ---> E:\test\_20230676154641.jpg, ====== result: true
2024-03-15 19:13:37.988 [main] INFO  com.fly.files.FileTest - E:\test\哈哈_20230676154717.png ---> E:\test\_20230676154717.png, ====== result: true
2024-03-15 19:13:37.988 [main] INFO  com.fly.files.FileTest - E:\test\嗯嗯_20230676190039.jpg ---> E:\test\_20230676190039.jpg, ====== result: true
2024-03-15 19:13:37.989 [main] INFO  com.fly.files.FileTest - E:\test\測試_20230676154623.jpg ---> E:\test\_20230676154623.jpg, ====== result: true
2024-03-15 19:13:37.989 [main] INFO  com.fly.files.FileTest - E:\test\維修_20230676155003.jpg ---> E:\test\_20230676155003.jpg, ====== result: true

到此這篇關(guān)于基于Java實現(xiàn)遍歷文件目錄并去除中文文件名的文章就介紹到這了,更多相關(guān)Java遍歷文件目錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

侯马市| 樟树市| 通许县| 诸暨市| 伊通| 和平县| 阳曲县| 韩城市| 阳新县| 安塞县| 章丘市| 通渭县| 淮南市| 资兴市| 志丹县| 石河子市| 盐池县| 崇义县| 拜城县| 萝北县| 登封市| 会东县| 雷山县| 四川省| 湄潭县| 大英县| 张掖市| 大宁县| 棋牌| 乌鲁木齐县| 花莲县| 阜康市| 玉树县| 宁强县| 遂平县| 呼伦贝尔市| 贵溪市| 汤原县| 宣武区| 炉霍县| 滕州市|